さて、私はこれにかなりの時間を費やしましたが、何が問題なのかまだわかりません。
ここで何が起こっているのですか:私はモデルreward.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
だから私はアイデアを使い果たしました...アプリはカピストラーノで展開され、私はRails 3.0.10を使用しています。
アップデート
さて、私は問題を理解しました。正直言ってかなりばかげています。誰かが作成した app/ 内に models.bak フォルダーがありました。本番環境では、モデルはそのフォルダーから取得されていました。