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

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to