Hello, we just researched a Php to Ruby compilation software,
because our client has some Php Project,
and that can accelarates their transition to rails,
and there are a lot of php projects out there, both open sourced and close sourced,
so this software may be helpful to accelarates the changes from php world to ruby’s world.
(Besides, some clouds, like VMWare cloudfoundry supports rails now, you can compile your php’s
project into rails and runs ontop of it).
This project compiles php code to ruby code as close as possbile,
so the following php code would compile to this code,
$instanceName = ‘db’;
$config = $sugar_config[‘dbconfig’];
if(!isset($dbinstances)){
$dbinstances = array();
}
//fall back to the default instance name
if(empty($sugar_config[‘db’][$instanceName])){
$instanceName = '';
}
if(!isset($dbinstances[$instanceName])){
$my_db_manager = ‘MysqlManager’;
if( $config[‘db_type’] == “mysql” ) {
if ((!isset($sugar_config[‘mysqli_disabled’])
$sugar_config[‘mysqli_disabled’] == false)
&& function_exists(‘mysqli_connect’)) {
$my_db_manager = ‘MysqliManager’;
}
}
if( $config[‘db_type’] == “oci8” ){
}
elseif( $config[‘db_type’] == “mssql” ){
if ( function_exists('sqlsrv_connect')
&& (empty($config[‘db_mssql_force_driver’]) || $config[‘db_mssql_force_driver’] == ‘sqlsrv’ ))
$my_db_manager = 'SqlsrvManager';
elseif (is_freetds()
&& (empty($config[‘db_mssql_force_driver’]) || $config[‘db_mssql_force_driver’] == ‘freetds’ ))
$my_db_manager = ‘FreeTDSManager’;
else
$my_db_manager = ‘MssqlManager’;
}
$GLOBALS[‘log’]->info(“using $my_db_manager DBManager backend”);
if(!empty($config[‘db_manager’])){
$my_db_manager = $config[‘db_manager’];
}
require_once(“include/database/{$my_db_manager}.php”);
$dbinstances[$instanceName] = new $my_db_manager();
$dbinstances[$instanceName]->getHelper();
$dbinstances[$instanceName]->connect($config, true);
$dbinstances[$instanceName]->count_id = $count;
$dbinstances[$instanceName]->references = 0;
$dbinstances[$instanceName]->getHelper()->db = $dbinstances[$instanceName];
}
else {
$old_count++;
$dbinstances[$instanceName]->references = $old_count;
}
#to this ruby code
_VARS[“instanceName”] = “db”
_VARS[“config”] = ((_VARS[“sugar_config”] ||= { }))[“dbconfig”]
if (not isset(_VARS[“dbinstances”]).php_true_value).php_true_value then
_VARS[“dbinstances”] = PhpArray.new
end
if empty((((_VARS[“sugar_config”] ||= { })[“db”] ||= { }))[_VARS[“instanceName”]]).php_true_value then
_VARS[“instanceName”] = “”
end
if (not isset(((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]]).php_true_value).php_true_value then
_VARS[“my_db_manager”] = “MysqlManager”
if (((_VARS[“config”] ||= { }))[“db_type”] == “mysql”).php_true_value then
if (((not isset(((_VARS[“sugar_config”] ||= { }))[“mysqli_disabled”]).php_true_value).php_true_value or (((_VARS[“sugar_config”] ||= { }))[“mysqli_disabled”] == false).php_true_value).php_true_value and self.function_exists(binding, “mysqli_connect”).php_true_value).php_true_value then
_VARS[“my_db_manager”] = “MysqliManager”
end
end
if (((_VARS[“config”] ||= { }))[“db_type”] == “oci8”).php_true_value then
nil
else
if (((_VARS[“config”] ||= { }))[“db_type”] == “mssql”) then
if (self.function_exists(binding, “sqlsrv_connect”).php_true_value and (empty(((_VARS[“config”] ||= { }))[“db_mssql_force_driver”]).php_true_value or (((_VARS[“config”] ||= { }))[“db_mssql_force_driver”] == “sqlsrv”).php_true_value).php_true_value).php_true_value then
_VARS[“my_db_manager”] = “SqlsrvManager”
else
if (self.is_freetds(binding).php_true_value and (empty(((_VARS[“config”] ||= { }))[“db_mssql_force_driver”]).php_true_value or (((_VARS[“config”] ||= { }))[“db_mssql_force_driver”] == “freetds”).php_true_value).php_true_value) then
_VARS[“my_db_manager”] = “FreeTDSManager”
else
_VARS[“my_db_manager”] = “MssqlManager”
end
end
end
end
_GLOBALS[“log”].info(binding, “using #{_VARS[“my_db_manager”]} DBManager backend”)
if (not empty(((_VARS[“config”] ||= { }))[“db_manager”]).php_true_value).php_true_value then
_VARS[“my_db_manager”] = ((_VARS[“config”] ||= { }))[“db_manager”]
end
_require_once(“include/database/#{_VARS[“my_db_manager”]}.php”, binding)
(_VARS[“dbinstances”] ||= { })[_VARS[“instanceName”]] = HomeController.const_get(_VARS[“my_db_manager”]).new(binding)
((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]].getHelper(binding)
((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]].connect(binding, _VARS[“config”], true)
((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]].count_id = _VARS[“count”]
((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]].references = 0
((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]].getHelper(binding).db = ((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]]
else
_VARS[“old_count”] = _VARS[“old_count”].+(1)
((_VARS[“dbinstances”] ||= { }))[_VARS[“instanceName”]].references = _VARS[“old_count”]
end
So we are going to release this to public.
$2500, one license ,up to 5 people’s use.
Anybody Interested? Talk to me.
my gmail is just this.
Best Regards.
femto