2011-06-18 32 views
1

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

+1

你需要下载环境.. –

+0

我该怎么做呢? IRB为我自动执行它,但如果我不使用IRB,则使用什么语法?该方法的 – Kvass

回答

4

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

从 “Ruby on Rails Guides”:

赛跑运动员在导轨的上下文Ruby代码非交互。例如:

$轨道亚军“Model.long_running_method”

0

如果你仅仅使用test.rb为方便保存和重新运行控制台命令,你可以这样做:

rails console < test.rb 

或者,作为一个黑客攻击的一位,把这个在您的test.rb的顶部:

require 'config/environment' 

,并调用它从应用程序的根目录是这样的:

ruby -I . test.rb 
+0

表示“切换到检查模式”。然后退出。 – Kvass

+0

'rails console

0

您的应用程序的文件夹中放置一个ruby文件不会自动加载你的Rails应用程序。您需要明确加载config/environment.rb文件来加载Rails应用程序。

如果您test.rb是在您的应用程序的根目录,你可以这样做

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