2011-12-08 11 views
5

W przeszłości wykonywałem wiele prac związanych z szynami i rubinami (przy użyciu rvm, z wieloma różnymi rodzajami rubinów), ale ostatnio nie wykonywałem żadnych prac rubinowych. Ja tylko starałem się zrobić nową aplikację szyn, aby upewnić się moje umiejętności nie są zardzewiałe, stosując następującą konfigurację:Nowa aplikacja Railsowa próbuje użyć jruby na "instalacji pakietu", kiedy oczekuję, że użyje zwykłego rubinu, zawiera błędy?

Korzystanie rubin systemową:

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

rails -v: Rails 3.0.7

gdy wpisuję: Szyny nowy testapp mogę dostać nowy aplikacja szyny, z Gemfile i wszystko wydaje się w porządku.

Wewnątrz plikiem TestApp, kiedy biegnę:

bundle install

uzyskać:

http://pastie.org/2986861

Co frustruje mnie to:

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' 

co wydaje się sugerować, że w wiązce używa jruby (i podczas tego błędu robi błędy i nie robi mojego pakietu zainstalować).

Czy coś tu jest oczywiście nie tak? Używam domyślnego pliku z klejnotami dołączonego do nowej aplikacji szyny ... (tutaj: http://pastie.org/2986869)

Ostatni raz robiłem prace na szynach, wszystko działało dobrze ... ale to było jakiś czas temu (miesiące , może prawie rok?). Czy jest coś, o czym zapominam?

Edit:

który pakiet:/home/jenny/bin/wiązka który szyn:/home/jenny/bin/szyny

Nie wierzę w siebie, aby być przy użyciu RVM w tej chwili , ale dla pewności upewniłem się, że rvm został wskazany na rubin systemowy (więc rvm czy nie, powinno używać tych samych rzeczy).

Edit: „lista RVM” dostaje mnie:

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 ]

które nie wygląda wszystko, co wielkie, albo ... Usuwanie jruby głowa pozbywa się tej kwestii, ale nadal mam ten sam problem bundle .

Edytuj: Usunięcie WSZYSTKICH jorych rvms ma taki sam efekt. Więc nie wygląda na to, że jego RVM psuje rzeczy. Wpisując, który z nich dostaje mnie "/ home/jenny/bin/jruby". Ale ... normalnie, jeśli CHCĘ używać jruby, muszę to określić (np. Poręcze) ​​.... pakiet nie powinien go używać domyślnie, prawda?

Edytuj (1/9/12): Aktualizacja mojego programu ładującego powoduje, że otrzymuję nowy (bardzo podobny) komunikat o błędzie. Konkretnie "Błąd współbieżności, nieprawidłowa zawartość tablicy z powodu niezsynchronizowanych modyfikacji z jednoczesnymi użytkownikami" z klejnotem "polyglot". Przynajmniej nie ma dziwactwa. (I również odinstalowałem wszystko w rvm i ponownie zainstalowałem wszystko, co zdawało się pomagać, i od teraz używam rvm). Odinstalowanie poliglota i ponowne zainstalowanie go wcale nie pomaga.

W końcu odinstalowałem rvm, a następnie zainstalowałem go ponownie, odinstalowałem zarówno systemowy ruby, jak i mój system jruby, i zainstalowałem tylko ruby ​​1.9.2 w rvm i wszystko działało. Whew.

Cóż, przynajmniej przeszedłem przez ten problem. Teraz mogę pakować, ale nie tworzyć nowych modeli? Czas na nowe pytanie, tak myślę.

+1

Co zwróci 'który pakiet'? 'który szynach'? Czy teraz nie używasz 'rvm'? –

+0

który pakiet:/home/jenny/bin/bundle z szynami:/home/jenny/bin/rails Nie wierzę, że używam RVM w tej chwili, ale po to, aby upewnić się, że upewniłem się, że rvm było wskazał na systemowy ruby ​​(więc rvm czy nie, powinien używać tych samych rzeczy). – Jenny

+0

Chyba chodziło o 'ls -l \', który szyny \ '', aby zobaczyć, czy jest to dowiązanie symboliczne. –

Odpowiedz

1

Skąd się wzięło bundle w swoim ? Czy jest to dowiązanie symboliczne do pliku w drzewie katalogowym .rvm, czy jest to skrypt? Jeśli jest to skrypt, co jest na pierwszej linii (shebang)? Być może jest ustawiony, aby zawsze działać w JRuby?

Zdarzyło mi się, że coś takiego "złego Ruby" się wydarzyło, albo przez plik wykonywalny gdzieś w moim $PATH przed Rubinem, którego chciałem, albo przez RVM po prostu przechodząc w chwasty i instalując klejnoty na niewłaściwe miejsce.

Gdyby to była moja maszyna, którą staram się wyeliminować pulę możliwych (J) Rubiny, że mogą one powodować konflikt z jednym próbuję uruchomić, coś takiego:

  1. Move ruby , jruby, gem, bundle oraz inne pliki wykonywalne związane z Ruby z mojego katalogu $HOME/bin do katalogu kopii zapasowych, który nie znajduje się na moim $PATH.
  2. Zmień nazwę drzewa $HOME/.rvm na coś innego niż moje $PATH.
  3. Ponownie zainstaluj nową kopię RVM lub rbenv i dodaj tylko wersje Ruby, których potrzebuję.
1

Dodaj plik .rvmrc do katalogu szyn z treścią:

rvm ruby-1.9.2-p136 

następnie cd .. a następnie cd na szynach app ponownie. (Sugerowałbym aktualizację do wersji 1.9.2-p290)

+0

i użycie szyn 3.1 przy rozpoczynaniu nowej aplikacji. – Robin

0

Może pomóc uaktualnienie do najnowszej wersji pakietu? jego obecnie jest 1.0.21.

Używasz wersji 1.0.13.

Upewnij się, że jest zainstalowany dla rubika 1.8.7.

Powiązane problemy