Ruby on rails 生产中的rails迁移失败,出现“0”;对象不缺少常量User“;
我在生产模式下迁移数据库时遇到了一个奇怪的问题。 初始的Ruby on rails 生产中的rails迁移失败,出现“0”;对象不缺少常量User“;,ruby-on-rails,migration,Ruby On Rails,Migration,我在生产模式下迁移数据库时遇到了一个奇怪的问题。 初始的rake db:migrate失败,出现错误“对象不缺少常量用户”,其中用户是我的一个模型,在本次迁移中访问如下: add_column :users, :feedbacks_count, :integer, :default => 0 User.reset_column_information User.all.each do |u| u.update_attribute :feedbacks_count
rake db:migrate
失败,出现错误“对象不缺少常量用户”,其中用户是我的一个模型,在本次迁移中访问如下:
add_column :users, :feedbacks_count, :integer, :default => 0
User.reset_column_information
User.all.each do |u|
u.update_attribute :feedbacks_count, u.feedbacks.length
end
end
日志显示如下:
对象不缺少常量用户
/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active\u support/dependencies.rb:417:in
`加载\缺少\常数'
/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active\u support/dependencies.rb:80:in
`const_缺少_不是_s3_库中的_
/var/lib/gems/1.8/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in'const_missing'
/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active\u support/dependencies.rb:92:in
`const_失踪'
/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active\u support/dependencies.rb:98:in
`发送'
/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active\u support/dependencies.rb:98:in
`const_失踪'
./db/migrate//20100823185519\u为计数器缓存添加列。rb:5:in
`没有基准的上升
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:282:in
`发送'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:282:in
`迁移'
/usr/lib/ruby/1.8/benchmark.rb:293:in
`措施'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:282:in
`迁移'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active\u record/migration.rb:365:in
`发送'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active\u record/migration.rb:365:in
`迁移'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:486:in
`迁移'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:562:in
`呼叫'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:562:in
`ddl_事务'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:485:in
`迁移'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:472:in
`各自的
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:472:in
`迁移'
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active\u record/migration.rb:400:in
`向上
/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:383:in
`迁移'
/var/lib/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:116
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in'call'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in'execute'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in'each'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in'execute'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in'invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in
`同步'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in'invoke_with_call_chain'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in'invoke'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in
`调用_任务'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in
`顶级'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in
`各自的
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in
`顶级'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in
`标准(例外)(处理)
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in
`顶级'
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in
`跑
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in
`标准(例外)(处理)
/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in
`跑
/var/lib/gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in“装载”
/usr/bin/rake:19
我读了很多文章,提到“Object不缺少常量X”,这里的问题主要是通过延迟加载或访问插件来引用模型。
在“添加”列之前要求“user.rb”,或者在访问用户表之前添加一个user.new
,都不能解决此问题
在迁移失败之前访问迁移中的用户模型也不会引起任何问题
关于这个问题最奇怪的是,一天前我将相同的代码迁移到另一台服务器,使用相同的设置,也在生产环境中,迁移在那里顺利运行
任何帮助都将不胜感激 当然,我不需要用户模型,而是通过
class User < ActiveRecord::Base; end
class用户
这就是要做的一切
仍然需要检查的是,为什么迁移不知道用户模型….在Amazon S3设置中有些配置错误。配置目录中是否缺少S3配置文件