Rails 3.2.6和dbi

时间:2012-09-16 04:55:39

标签: ruby-on-rails ruby gem dbi incompatibility

我有一个小型的rails应用程序,它运行良好的Ruby 1.8x和Rails 2.x版本在一个令人遗憾的决定中,我决定转向Ruby 1.9.x和Rails 3, 这是一种光荣的痛苦。

我的Ruby应用程序使用MySQL,我使用Active Record。 但是我已经编写了一个早期的pgm来填写数据库 在我做Rails(2.x)之前,它现在是完整应用程序的一部分。 (我可以在Rails之外测试/运行独立的pgm,但没有 问题)。

这个独立程序使用的是MySQL和dbi gems。我从模型中称这个程序为:

 system("ruby standalonepgm.rb -args ")

在Rails 2.0中,这没有任何问题。 在3.0中程序退出时没有任何方法来捕获错误。

在控制台下运行我发现该程序因为无法找到而死亡 dbi gem!

如果我把dbi gem放在Gemfile中并做捆绑日期,那么就有了 真正的麻烦。 Rails拒绝启动 - rails服务器因各种问题而死亡。 我可以加入screendump,但我认为这不重要。

似乎有两个问题:

  1. DBI肯定与Rails之神不相容
  2. Rails创建了一个沙箱,所有被调用的程序都必须存在 sandbox(这就是为什么只需要一个require语句就不够了......它必须在Gemfile中)。
  3. 它是否可以修复,或者我是那些被隐藏的铁轨黑魔法所咬伤的人之一,而且我过去8周以上的努力已经下来了?

1 个答案:

答案 0 :(得分:1)

通过使用固定 Bundle.with_clean_env呢  系统(“ruby pgm.rb” 端

我从未阅读过捆绑文件..这个案例在其中有描述..