Ruby 尝试添加记录时未初始化的常量联系人(NameError)

Ruby 尝试添加记录时未初始化的常量联系人(NameError),ruby,ruby-on-rails-3,sqlite,activerecord,uninitialized-constant,Ruby,Ruby On Rails 3,Sqlite,Activerecord,Uninitialized Constant,Model contact.rb: class Contact < ActiveRecord::Base attr_accessible :name, :phone end 从终端运行test.rb时,我收到错误: lib/tasks/test.rb:1:in`:未初始化的常量联系人 (名称错误) database.yml: development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 t

Model contact.rb:

class Contact < ActiveRecord::Base
  attr_accessible :name, :phone
end
从终端运行test.rb时,我收到错误:

lib/tasks/test.rb:1:in`:未初始化的常量联系人 (名称错误)

database.yml:

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000
我相信这是一个微不足道的问题。我搜索过这个论坛,但没有给出任何线索


如果我必须输入额外的信息来澄清,请告诉我。

您不能简单地运行
ruby lib/tasks/test.rb,因为Rails环境将不会加载。要解决这个问题,您需要使用rake任务

首先必须将文件
lib/tasks/test.rb
重命名为
lib/tasks/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
然后,您需要将其添加到
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
启动任务

要计划在特定时间运行任务,您可能需要查看gem


希望有帮助。

如何运行测试?从终端。我正计划把它作为一项预定的任务。谢谢,我知道这一点。当我按照上面的建议运行时,我收到了一个错误:rake中止!未初始化的常量拐点/home/askar/Dropbox/rails_studio/sqltest/config/environment.rb:7:in
'/home/askar/.rvm/gems/ruby-1.9.3-p429/gems/rails-3.2.13/lib/rails/application.rb:103:in
require'/home/askar/.rvm/gems/ruby-1.9.3.3-13/lib/rails/application.rb:103:in'require\u环境!'。。。我不能把所有的错误消息都放进去,因为它很长。你在config/environment.rb中有什么?有自定义声明吗?哦,对不起,在我发表这篇文章之前,我有一个自定义声明。一旦我删除了它,它就起作用了。非常感谢!:)