RubyGems not loaded

Witam ostatnio jestem na etapie poznawania linuxa i programów które w “teorii” mają ułatwić mi pracę w tym język. Jednym z tych programów jest Rubygams. W czym rzecz…

  • Na Ubuntu (który odpalam przez Virtual Machine z Win7) zainstalowałem RVM i przez niego Ruby 2.1.1
  • Potem zrobiłem"gem update" żeby zaktualizować wersję do najnowszej.
    Następnie idąc krok po kroku tutorialem ( http://guides.rubygems.org/rubygems-basics/ ) doszedłem do momentu kiedy w irb wyszukuje się ścieżki do przykładowego gema i tu zaczęły się schody…

Na polecenie "require ‘ap’ " otrzymałem taki zwrot:

LoadError: cannot load such file -- ap
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from (irb):3
	from /home/kask/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'

Na moje laickie oko wygląda to tak jakby Ruby nie szukał w katalogu “games” do którego rubygames zapisuje pobrane gemy.

Jestem zielony z linuxa i nie bardzo wiem jak to ugryźć :frowning:

Hej,
większość moich problemów z require wynikała z tego, że w konsoli ruby/rails podawałem złą ścieżkę do pliku. Sprawdź ją.

Pozdr

a zainstalowałeś ap w bierzącym gemsecie?

@Mikeroz - wpiałem tylko "require ‘ap’ " wg. tutka powinno zadziałać, nie podawałem żadnej ścieżki.

@wafcio - nie instalowałem ap, liczyłem że jest “w pakiecie” ale zainstalowałem “rubywarrior” i gdy wpisałem " require ‘rubywarrior’ " efekt był ten sam.

PS. co to gemeset (zbiór gemów przypisany do obecnej wersji ruby ? )

Wybacz, pomyliło mi się i myślałem że dałeś link do RVM - mój błąd. Moja propozycja w tym momencie jest taka: poczytaj trochę o narzędziaj do zarządzania wersjami Rubiego np. RVM (https://rvm.io) lub rbenv (https://github.com/sstephenson/rbenv). Instalowanie gemów w systemowym rubym sprowadzi później więcej problemów niż to widać na samym początku.

Jak chcesz sprawdzić jakie masz gemy to wpisz gem list i zobaczysz czy masz ap zainstalowane.

PS. Ten tutorial jest do niczego, nie ma opisu krok po kroku. Zastanawiam się czy takie coś w ogóle istenieje dla początkujących.

Ok ap nie jest zainstalowane ale jak pisałem rubywarrior już tak i jest wykazany na liście (po wpisaniu gem list), a po wpisaniu " require ‘rubywarrior’ " wynik jest taki sam.

Ok poszukam na necie i zapytam n Stack Overflow, jak uda mi się to jakoś rozwiązać, podam rozwiązanie tutaj. Może się komuś też przyda :smile:

zamieść błąd z konsoli jaki otrzymujesz po wpisaniu require 'rubywarrior'

LoadError: cannot load such file -- rubywarrior
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from (irb):1
	from /home/kask/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'

Czyli to samo wychodzi na to że ruby nie sprawdza w ścieżce rubygeme

A wiec tak, masz zainstalowanego RVM, poczytaj o tworzeniu gemsetów i ich usuwaniu (https://rvm.io/gemsets). Gemset to izolowany zbiór gemów.

mógłbyś podać co ci wyświetla gem list

RVMem się generalnei na razie nie przejmuj, szczególnie jak pracujesz na wirtualce.

Moje podejrzenie to to że gemy się poprawnie nie zainstalowały. Spróbuj zainstalowac gem jeszcze raz przez gem install x po czy zweryfikuj instalację przez gem list jeżeli gem się tam pojawia to kolejna rzeczą którą możliwe że musisz zrobić to wydać polecenie gem "ruby-warrior" przed require "ruby-warrior" żeby dodać gema do ścierzki wyszukiwania.

kask@ubuntu:~$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.5, 1.1.0)
bundler (1.5.3)
bundler-unload (1.0.2)
executable-hooks (1.3.1)
gem-wrappers (1.2.4)
io-console (0.4.2, 0.3)
json (1.8.1, 1.5.5)
minitest (5.3.1, 2.5.1)
rake (10.2.1, 0.9.2.2)
rdoc (4.1.1, 3.9.5)
rubygems-bundler (1.4.2)
rubywarrior (0.1.3)
rvm (1.11.3.9)
x (0.0.3)

wpisalem gem “rubywarrior” i dostałem “=> true” ale jak wpisalem require ‘rubywarrior’ dostalem:

2.1.1 :004 > gem 'rubywarrior'
 => true 
2.1.1 :005 > require 'rubywarrior'
LoadError: cannot load such file -- rubywarrior
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from (irb):5
	from /home/kask/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'

@wafcio - cos poczytalem o gem setach i tak:

  • stworzyłem gemset “test”: rvm gemset create test
  • urzyłem: rvm gemset use test
  • dodałem tam ruby warrior: gem install rubywarrior

i co teraz… (sorki za lapidarnosc) z tego co czytalem rvm tworzy osobne gem sety do wszystkiego czyli terminala i irb.

teraz jak jestes w konkretnym gemsecie to dajesz gem list i widzisz zainstalowane gemy w ty gemsecie i require juz powinien dzialać, jeśli znowu wywali tobie błąd to przeklej go tutaj, bo zapewne będą inne ścieżki

sprobuj

require 'ruby_warrior'

Jesli chcesz uzyskac wiecej informacji przy instalacji gema (np. sciezka instalacji) wskazane jest uzywanie przelacznika -V

gem install rubywarrior -V

@marr ma rację niestety nikiedy naza gema nie pasuje do końca do nazwy biblioteki, rzadko ale się zdarza.

Ok po odpaleniu terminala wpisałem takie cos:

kask@ubuntu:~$ ruby -v
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]
kask@ubuntu:~$ rvm use 2.1
Using /home/kask/.rvm/gems/ruby-2.1.1
kask@ubuntu:~$ rvm gemset use test
Using ruby-2.1.1 with gemset test
kask@ubuntu:~$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.4)
bundler (1.5.3)
bundler-unload (1.0.2)
executable-hooks (1.3.1)
gem-wrappers (1.2.4)
io-console (0.4.2)
json (1.8.1)
minitest (4.7.5)
psych (2.0.3)
rake (10.1.0)
rdoc (4.1.0)
rubygems-bundler (1.4.2)
rubywarrior (0.1.3)
rvm (1.11.3.9)
test-unit (2.1.1.0)
kask@ubuntu:~$ irb
2.1.1 :001 > gem "rubywarrior"
 => true 
2.1.1 :002 > require 'rubywarrior'
LoadError: cannot load such file -- rubywarrior
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from (irb):2
	from /home/kask/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'
2.1.1 :003 > require 'ruby_warrior'
 => true 
2.1.1 :004 > 

Czyli udało by się ??

#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../lib/ruby_warrior'

runner = RubyWarrior::Runner.new(ARGV, STDIN, STDOUT)
runner.run

Jak to odpalic ?? jak wpisalem w irb runner.run to dostalem

2.1.1 :004 > runner.run
NameError: undefined local variable or method `runner' for main:Object
	from (irb):4
	from /home/kask/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'

na to wychodzi

Musisz w konsoli wpisac

runner = RubyWarrior::Runner.new(...)

żeby mieć dostęp do zmiennej runner w konsoli

Dobra czas na konstruktywne podsumowanie (może komuś się przyda, mnie na pewno :wink: )

Problem RubyGems not loaded:

LoadError: cannot load such file -- ap
from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/kask/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from (irb):3
from /home/kask/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'

Jak zwykle w moim przypadku problem zrodził się z połączenia mojego braku wiedzy i przypadku. Idąc za faktycznie kiepskim tutorialem: http://guides.rubygems.org/rubygems-basics/, wyskoczył mi błąd że gem ‘ap’ nie może zostać znaleziony. Co było spowodowane tym że go tam faktycznie nie było, program więc zwracał właściwy błą. Problem ROZWIĄZANY :smile:

Następnie kwestia przypadku…

Idąc za ciosem zainstalowałem gem ‘rubywarrior’: poprzez gem install rubywarrior i znow pojawił się problem bo program zwracał ze nie może go zlokalizować… problem ROZWIĄZANY przez @marr require ‘ruby_warrior’ faktycznie zadziałało. Okazało się że gemset nie był potrzeby bo rvm znalazł w 'rubywarrior; w bazowym secie ruby.
;
Ale dzięki waszej pomocy i radom (przede wszystkim @wafcio) dowiedziałem się:

  • podstaw tworzenia i zarządzania gemsetmi w RVM
  • podstawowych funkcji RVM (dodanie wersji ruby, zmiana wersji ruby)
  • jak dodatkowo poradzić sobie z takim problemem coby nie zaśmiecać forum w przyszłości, czyli niezgodność nazwy gema i biblioteki.
  • Dowiedziałem się że nazwa biblioteki powinna zgadzać się z nazwą gema.

Dzięki za pomoc, bez Was pewnie bym z tym jeszcze tydzień siedział. Jak znów na czymś stanę pewnie się odezwę. :smile:

Kolego przerób może od początku jakiś kurs ruby najpierw. Będzie ci o wiele łatwiej.

Zacząłem od Learn Ruby the Hard Way i w ćw 46 trzeba zapoznać się samemu z RVM RubyGems Rake Bounder i Git. I tak zacząłem przygodę z tymi programami i natrafiłem na problem, a że z linuxem jestem od tygodnia zrodziło to dodatkową konsternacje :frowning:

dobrze chociaż, że przerzuciłeś się na linuxa