2011-12-08 7 views
5

私は過去にたくさんのレールとルビー作業を行っていましたが(rvm、さまざまなタイプのルビーを使用しています)、最近ルビー作業を一切行っていません。私が入力したときに新しいRailsアプリケーションは、定期的なルビを使用すると「バンドルインストール」でjrubyを使用しようとしましたが、エラーがありますか?

which ruby: /usr/bin/ruby
ruby -v: ruby 1.8.7 (2008-08-11> patchlevel 72) [i586-linux]

rails -v: Rails 3.0.7

:システムのルビーを使用して

:新しいTestAppがレール私は新しいを取得し、私はちょうど私のスキルは次のセットアップを使用して、錆びていないことを確認するために、新しいレールのアプリを作ってみましたレールアプリ、Gemfileとすべての問題はないようです。私が手

bundle install

::私は実行でTestApp、内部

http://pastie.org/2986861

私を失望させる何がある:というバンドルを意味すると思わ

org/jruby/RubyArray.java:1671:in `each': Detected invalid array contents due to unsynchronized modifications with concurrent users (ConcurrencyError) 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/spec_set.rb:12:in `each' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/installer.rb:49:in `run' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/installer.rb:8:in `install' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/cli.rb:222:in `install' 
from org/jruby/RubyObject.java:1334:in `send' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/vendor/thor/task.rb:21:in `run' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/vendor/thor.rb:246:in `dispatch' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/lib/bundler/vendor/thor/base.rb:389:in `start' 
from /home/jenny/lib/ruby/gems/1.8/gems/bundler-1.0.13/bin/bundle:13:in `(root)' 
from org/jruby/RubyKernel.java:1066:in `load' 

jrubyを使用しています(エラーが発生している間にエラーが発生し、バンドルを実行できません)。インストール)。

明らかに間違っていますか?私は新しいレールアプリに含まれているデフォルトのgemファイルを使用しています...(http://pastie.org/2986869

最後にレールの作業を行ったとき、すべて正常に動作しました...しかし、 、おそらくほぼ1年か?)。私が忘れているものはありますか?

編集:私は、現時点ではRVMを使用する自分自身を信じてはいけない

/ホーム/ジェニー/ binに/レール:レール/ホーム/ジェニー/ binに/バンドル :バンドル

ただ、rvmがシステムのルビーを指していることを確かめた(rvmかnoか、それは同じものを使うべきです)。

編集:「RVMリストは、」私を取得します。見ていない

rvm list

rvm rubies

ruby-1.9.2-p136 [ i386 ] 

jruby-1.3.1 [ i386-java ]

jruby-1.5.6 [ i386-java ]

ruby-1.9.2-p0 [ i386 ]

ruby-1.9.2-rc1 [ i386 ]

jruby-1.2.0 [ i386-java ]

jruby-1.6.1 [ linux-i386-java ]Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/Main Caused by: java.lang.ClassNotFoundException: org.jruby.Main at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:319) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:264) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332) Could not find the main class: org.jruby.Main. Program will exit.

jruby-head [ ]

jruby-1.6.2 [ linux-i386-java ]

jruby-1.4.0 [ i386-java ]

すべてが素晴らしい、のいずれか...削除JRubyのヘッドは、その問題を取り除くが、私はまだ同じバンドルの問題を持っています。

編集:すべてのjruby rvmsを削除すると、同じ結果になります。それで、RVMがうまくいけないように見えません。 jrubyが私に "/ home/jenny/bin/jruby"を入力すると入力します。しかし...通常、jrubyを使用したいのであれば、それを指定する必要があります(例えば、jruby railsなど)....バンドルは、デフォルトでは使用しないでください。

編集(1/9/12):私のバンドラを更新すると、新しい(非常に似たような)エラーメッセージが表示されます。具体的には、同時実行エラー、同時ユーザーとの非同期変更による無効な配列内容 "gem" polyglot "少なくともjruby奇妙さ。 (私はまた、rvmのすべてをアンインストールして、すべてを再インストールしました。これは助けに思えました。ここからrvmを使います)。 polyglotをアンインストールして再インストールすることはまったく役に立ちません。

最後に、私はrvmをアンインストールしてから再インストールし、システムのルビーと私のシステムのjrubyの両方をアンインストールし、rvmには1.9.2のrubyしかインストールしていませんでした。ホウ

少なくとも、私はその問題を解決しました。今ではバンドルできますが、新しいモデルを作ることはできません。新しい質問の時間。

+1

「バンドル」とは何ですか? 'どのレール?今あなたは 'rvm'を使っていませんか? –

+0

このバンドルは/ home/jenny/bin/bundleです。/ home/jenny/bin/rails 現時点ではRVMを使用しているとは思っていませんが、確かにrvmがシステムのルビーを指しています(rvmかnoか、それは同じものを使うべきです)。 – Jenny

+0

私が 'シンボリックリンクかどうかを調べる' ls -l \ 'を意味すると思います。 –

答えて

1

$HOME/binbundleはどこから来ましたか?それはどこかの.rvmディレクトリツリー内のファイルへのシンボリックリンクですか、それともスクリプトですか?スクリプトの場合、最初の(シバン)行は何ですか?おそらく、JRubyで常に動くように設定されていますか?

この種の「間違ったRuby」は、私の望んでいたRubyより先の$PATHの実行可能ファイルを介して、またはRVMを介して単純に雑草に行き、間違ったところに宝石をインストールする場所。

  1. 移動ruby:それは私のマシンだったら

    することは、私が実行しようとしているものと干渉するかもしれない可能性(J)ルビーのプール、次のようなものを排除するために試してみました、jrubygembundle、その他のRuby関連の実行ファイルは$HOME/binから$PATHにないバックアップディレクトリにあります。

  2. $HOME/.rvmツリーの名前を$PATHに変更してください。
  3. 新しいコピーRVMまたはrbenvを再インストールし、必要なRubyのバージョンだけを追加してください。
1

は内容で、レールのディレクトリに.rvmrcファイルを追加します。

rvm ruby-1.9.2-p136 

し、CD ...と再びレールのアプリにcd。 (私は1.9.2-p290にアップグレードすることをお勧めします)

+0

と、新しいアプリを起動する場合は、レール3.1を使用することもできます。 – Robin

0

多分最新のバンドラーにアップグレードすると役に立ちますか?現時点では1.0.21です。

1.0.13を使用しています。

1.8.7ルビー用にインストールされていることを確認してください。

関連する問題