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