2011-12-08 6 views
5

Ho fatto un sacco di binari e lavoro rubino in passato (usando rvm, con molti tipi diversi di rubini), ma ultimamente non ho fatto alcun lavoro di rubino. Ho solo cercato di fare una nuova applicazione Rails per assicurarsi che le mie capacità non sono arrugginite, utilizzando la seguente configurazione:L'app New Rails tenta di usare jruby su "bundle install" quando mi aspetto che usi il ruby ​​regolare, abbia errori?

Utilizzando il sistema di rubino:

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

rails -v: Rails 3.0.7

quando digito: rotaie nuova TestApp ottengo un nuovo app per rails, con un Gemfile e tutto sembra a posto.

All'interno di TestApp, quando corro:

bundle install

ottengo:

http://pastie.org/2986861

Quello che mi frustra è:

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' 

che sembra implicare che il fascio sta usando jruby (e l'errore mentre lo fa e non riescono a fare il mio pacchetto installare).

C'è qualcosa ovviamente che non va qui? Sto usando il file gem predefinito incluso con la nuova app di rotaie ... (trovato qui: http://pastie.org/2986869)

L'ultima volta che ho fatto funzionare alcune rotaie, tutto ha funzionato bene ... ma era un po 'di tempo fa (mesi , forse quasi un anno?). C'è qualcosa che sto dimenticando?

Edit:

che bundle:/home/jenny/bin/bundle che Rails:/home/jenny/bin/rotaie

Non credo a me stesso di essere utilizzando RVM in questo momento , ma solo per essere sicuro di aver fatto in modo che rvm fosse puntato sul ruby ​​del sistema (quindi rvm o no, dovrebbe usare le stesse cose).

Edit: "Lista rvm" mi fa:

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 ]

che non sembra poi così grande, sia ... Cancellazione testa JRuby si libera di quel problema, ma ho ancora lo stesso problema fascio .

Modifica: l'eliminazione di TUTTI jruby rvms ha lo stesso risultato. Quindi, non sembra come il suo RVM che incasina le cose. Digitando quale jruby mi ottiene "/ home/jenny/bin/jruby". Ma ... normalmente se voglio usare jruby devo specificarlo (jruby rails, per esempio) .... bundle non dovrebbe usarlo di default, giusto?

Modifica (1/9/12): L'aggiornamento del pacchetto mi consente di ottenere un nuovo messaggio di errore (molto simile). In particolare "Errore di concorrenza, contenuto di array non valido a causa di modifiche non sincronizzate con utenti concorrenti" con la gemma "poliglotta". Almeno nessuna bizzarra stranezza. (Ho anche disinstallato tutto in rvm e reinstallato tutto, il che sembrava essere d'aiuto, e userò semplicemente rvm da qui in poi). Disinstallare polyglot e reinstallarlo non aiuta affatto.

Alla fine, ho disinstallato rvm, quindi reinstallato, disinstallato sia il mio sistema ruby ​​che il mio sistema jruby, e installato solo ruby ​​1.9.2 in rvm e tutto ha funzionato. Accidenti.

Beh, almeno ho superato questo problema. Ora posso raggruppare, ma non creare nuovi modelli? Tempo per una nuova domanda, immagino.

+1

Cosa restituisce? Quale pacchetto? 'che rotaie'? Stai * non * usando 'rvm' adesso? –

+0

quale bundle:/home/jenny/bin/bundle che rotaie:/home/jenny/bin/rails Non credo di poter utilizzare RVM al momento, ma per essere sicuro di aver fatto in modo che rvm fosse indicò il sistema rubino (quindi rvm o no, dovrebbe usare le stesse cose). – Jenny

+0

Indovinavo intendevo 'ls -l \' che rota \ '' per vedere se si tratta di un link simbolico. –

risposta

1

Da dove proviene il bundle nel tuo $HOME/bin? È un collegamento simbolico a un file nell'albero delle directory .rvm da qualche parte o è uno script? Se è una sceneggiatura, cosa c'è nella prima riga (shebang)? Forse è impostato per correre sempre in JRuby?

Ho visto questo tipo di cosa "Ruby errata" prima, tramite un eseguibile da qualche parte nel mio $PATH prima del Ruby che volevo, o tramite RVM semplicemente andando fuori tra le erbacce e installando gemme nel torto posto.

Se fosse la mia macchina, mi piacerebbe provare a eliminare il pool di possibili (J) Rubini che potrebbero interferire con quello che sto cercando di correre, qualcosa di simile:

  1. Sposta ruby , jruby, gem, bundle e qualsiasi altro eseguibile relativo a Ruby dal mio $HOME/bin a una directory di backup non sul mio $PATH.
  2. Rinominare l'albero $HOME/.rvm in qualcosa che non è sul mio $PATH.
  3. Reinstallare una copia nuova RVM o rbenv e aggiungere solo le versioni di Ruby di cui ho bisogno.
1

Aggiungere un file alla directory .rvmrc rotaie con il contenuto:

rvm ruby-1.9.2-p136 

poi cd .. e poi cd nelle guide app di nuovo. (Suggerirei di passare a 1.9.2-p290)

+0

e utilizzare i binari 3.1 se si avvia una nuova app. – Robin

0

Forse l'aggiornamento all'ultima offerta di bundler sarà d'aiuto? è al 1.0.21 al momento.

Si sta utilizzando 1.0.13.

Assicurarsi che sia installato per il tuo 1,8,7 rubino.

Problemi correlati