Rails - IRB是否必要?

时间:2011-06-18 19:45:43

标签: ruby ruby-on-rails-3 irb

我正在关注Michael Hartl的RoR toturial并且他有多个地方使用IRB,经常将用户添加到数据库中。当我使用rails console打开IRB然后在数据库中创建一个用户时,一切正常,但是如果我尝试通过从test.rb这样的文件中运行相同的代码行来做同样的事情。我的应用程序的目录它不起作用b / c它说它找不到用户模型。有没有什么方法可以从.rb文件而不是从IRB运行这些代码行(即将用户放入数据库)?

3 个答案:

答案 0 :(得分:4)

对于单独的脚本,请查看rails runner。它加载了Rails后端,因此您可以访问所有模型并为此目的而存在。

来自“Ruby on Rails Guides”:

  

runner以非交互方式在Rails的上下文中运行Ruby代码。例如:

     

$ rails runner“Model.long_running_method”

答案 1 :(得分:0)

如果您只是使用test.rb作为保存和重新运行控制台命令的便利,您可以这样做:

rails console < test.rb

或者,作为一个黑客,把它放在test.rb的顶部:

require 'config/environment'

并从应用程序的根目录中调用它,如下所示:

ruby -I . test.rb

答案 2 :(得分:0)

将ruby文件放在应用程序的文件夹中不会自动加载您的Rails应用程序。您需要显式加载config/environment.rb文件以加载Rails应用程序。

如果您的test.rb位于应用的根目录中,则可以执行类似

的操作
require File.expand_path("../config/environment", __FILE__)
# Access your models here