【发布时间】:2012-08-10 04:02:28
【问题描述】:
好吧,所以我花了相当多的时间来解决这个问题,但仍然无法找出问题所在。
这是怎么回事:我有一个模型奖励.rb,它的方法 X 是这样的:
class Reward < ActiveRecord::Base
def x
puts "foo" # Method does something...
end
end
rails 应用程序现在在生产环境中,如果你这样做的话,它正在开发中
rails c
然后
>> r = Reward.new
>> r.x
"foo" # I.e it works...
现在,如果您进入服务器并执行此操作
rails c
然后
>> r = Reward.new
>> r.x
NoMethodError: undefined method `x' for #<Reward:0x0000000561fa08>
如果您在同一服务器中检查reward.rb,您会看到该方法在那里,实际上它是文件中的第一个方法...所以,正如我所见,Rails 没有加载模型的最新代码加载控制台...
我认为这可能与 Rails 的缓存有关,但 production.rb 说:
MyApp::Application.configure do
config.cache_classes = false
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching = false
# SMTP settings and other stuff.. not related to caching...
end
和 environment.rb:
# Load the rails application
require File.expand_path('../application', __FILE__)
# Initialize the rails application
MyApp::Application.initialize!
还有application.rb:
module MyApp
class Application < Rails::Application
config.encoding = "utf-8"
config.filter_parameters += [:password]
end
end
所以我的想法已经用完了...该应用程序是使用 capistrano 部署的,我使用的是 Rails 3.0.10。
更新
好的,所以我发现了问题,说实话很傻,app/ 中有一个models.bak 文件夹是有人创建的,在生产中模型是从那个文件夹中获取的
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 capistrano