2011-01-22 19 views
3

私はを作成しようとしています。Rails 3環境で実行するスクリプトはRubyです。私はレールランナーでこのrubyscriptを実行するたびにRails 3ランナーはJSON gemを検出していませんか?

はしかし、私はこのエラーを取得する:

require 'rubygems' 
require 'json' 

@payload = { 
"message" => "helloworld", 
"station" => {"id"=>12345} 
}.to_json 

puts @payload 

ERROR:

/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:212:in `require': no such file to load -- json (LoadError) 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:212:in `require' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:198:in `load_dependency' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:554:in `new_constants_in' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:198:in `load_dependency' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:212:in `require' 
from createflags.rb:2 
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands.rb:39:in `eval' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands/runner.rb:47 
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands.rb:39:in `require' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands.rb:39 
from script/rails:6:in `require' 
from script/rails:6 

誰かが私が何ができるかを教えてくださいすることができこれを修正しますか?

+0

'gem list'は何の出力をしますか? – Matchu

+0

gemリストにjson(1.4.6、1.4.3)と json_pure(1.4.6、1.4.3)が正しく表示されます。このスクリプトは「ruby scriptName.rb」では正常に動作しますが、「rails runner script.rb」では正しく動作しません。 – unicornherder

答えて

2

私はBundlerの内部をよく知っているわけではありませんが、Gemfileに含まれていない他の宝石はrequireできません。たぶんgem 'json'を追加するとこれが処理されます。

もちろん、ActiveSupportには独自のJSONモジュールがあるため、別の宝石を引き出す必要はありません。

0

remove "json"を削除してから、試してください。 ActiveSupportには既にto_jsonが組み込まれていると思います。

関連する問題