私はここで終わりですが、このf *#$ ^エンコーディングの問題については、rvm、ruby 1.9.2、bundler、passengerを使用した「初期化されていない定数エンコーディング」
私はDreamhostでroot権限を持つプライベートサーバー上で実行しています。ここで私の環境とバージョンについての少しです。
$ `which ruby` -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ `which bundle` -v
Bundler version 1.0.15
$ `which rails` -v
Rails 3.0.9
このエラーとは別に、私のレールアプリは問題なく動作します。私はそれをencode
メソッドを使用して、エンコーディングに文字列を変更しようとすると、しかし、:
NoMethodError: undefined method `encode' for "foobar":String
encode
should beを定義したが、それはありません!
$ irb
ruby-1.9.2-p180 :001 > Encoding
=> Encoding
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8')
=> "foobar"
しかし、私は、バンドル幹部を通じてレールコンソールを使用してみた場合、Encoding
が発見されていない:私はirb
にしようとした場合Encoding
が発見された
$ bundle exec rails c staging
Loading staging environment (Rails 3.0.9)
ruby-1.9.2-p180 :001 > Encoding
NameError: uninitialized constant Encoding
from /[REDACTED]/shared/bundle/ruby/1.8/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing'
from (irb):1
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8')
NoMethodError: undefined method `encode' for "foobar":String
セットアップが正常に何かをロードしていませんが、私それを理解するためにどこを見るべきかわからない。私はここで何が欠けていますか?
UPDATE 2011年6月19日
ライアンBiggのが指摘したように、宝石のディレクトリパスが1.8
であること好奇心旺盛です。しかし、bundle exec
を実行すると、バンドラのバージョンが正しいルビーを使用してレールされていることを示しています
$ bundle exec which ruby
/path/to/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
$ bundle exec `which ruby` -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ bundle exec which rails
/path/to/shared/bundle/ruby/1.8/bin/rails
$ bundle exec `which rails` -v
Rails 3.0.9
明らかに何かがここにグラグラです...私は何を知りません。
UPDATE 2011年6月26日シーマスは$LOAD_PATHを求め
...
UPDATE 2011年6月26日(後)
シーマスを尋ねましたとpp ENV ... ENV
の出力では、GEM_PATH
が正しくないことがわかりました。私staging.rb
環境ファイルでは、私が持っている:明らかに光栄されていない
GEM_HOME = "/home/[REDACTED]/.rvm/gems/[email protected][REDACTED]"
GEM_PATH = "/home/[REDACTED]/.rvm/gems/[email protected][REDACTED]:/home/[REDACTED]/.rvm/gems/[email protected]"
を...。どこも私のコードでGEM_HOME
またはGEM_PATH
の言及はありシーマスは.bundle/config
内容を求めUPDATE 2011年6月27日
...
あなたの '/ shared/bundle/ruby/1.8 /'は、あなたのコンソールがまだ1.9ではなく1.8を使っていることを示しています。 –
しかし、プロンプトに「ruby-1.9.2-p180」と表示されますか? – coneybeare
@coneybeare:しかし、 '/ shared/bundle/ruby/1.8'は1.8と言っていますか? '/ shared/bundle/ruby/1.8'を削除してください。もう一度 'bundle install'を実行しなければならないかもしれません。 –