模型contact.rb:
class Contact < ActiveRecord::Base
attr_accessible :name, :phone
end
Test.rb:
Contact.create({:name => "Josh", :phone => "123-456789"})
当我从终端I运行test.rb时收到错误:
lib / tasks / test.rb:1:在`&#39;:未初始化的常量联系人 (NameError)
database.yml中:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
我认为这是一个微不足道的问题。我已经搜索了这个论坛,但它没有提供任何线索。
如果我必须输入其他信息以便明确说明,请告诉我。
答案 0 :(得分:1)
您不能简单地运行ruby lib/tasks/test.rb
,因为不会加载Rails环境。要解决此问题,您需要使用rake任务。
首先,您必须将文件lib/tasks/test.rb
重命名为lib/tasks/test.rake
。
然后,您需要将其添加到test.rake
。
namespace :contact do # This is not require. It can work without having to nest your task within a namespace.
desc 'Add contact'
task 'add' => [:environment] do #Here, we specify we want to load the environment
Contact.create({:name => "Josh", :phone => "123-456789"})
end
end
然后,运行rake -T
,列出所有可用的任务。
您可以使用rake contact:add
启动任务。
要安排在特定时间运行任务,您可能需要查看Whenever gem。
希望它有所帮助。