私は現在、David Blackの "Well Grounded Rubyist"のモジュールについて読んでいます。kernel_require.rb:54:in 'require'(LoadError)in well grounded Rubyist
# stacklike.rb
module Stacklike
def stack
@stack ||= []
end
def add_to_stack(obj)
stack.push(obj)
end
def take_from_stack
stack.pop
end
end
# stack.rb
require "stacklike"
class Stack
include Stacklike
end
s = Stack.new
s.add_to_stack("item one")
s.add_to_stack("item two")
s.add_to_stack("item three")
puts "Objects currently on the stack: "
puts s.stack
taken = s.take_from_stack
puts "Removed this object: "
puts taken
puts "Now on stack: "
puts s.stack
そして、私はプログラム、$ ruby stack.rb
を実行すると、私は次のエラーを取得する:
/Users/myName/.rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require': cannot load such file -- stacklike (LoadError) from /Users/myName/.rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require' from stack.rb:2:in '<main>'
からThe #require method in modules mix-ins - 私は変更しようとした:require "./stacklike"
からrequire "stacklike"
を、それが動作しませんでしたので、私はこれらを試してみました:
require_relative "stacklike"
require "***I put the absolute path to the file here***"
でも成功しません。その後、私はここに見えた:$ which -a ruby
を、そして次の出力ました: ... no such file to load -- rubygems (LoadError)を、そして私は2つのルビのバージョンを持っているようだ私は走った私はRubyGemsの& 2つのルビーのバージョンが影響を与えていると思う
/Users/myName/.rvm/rubies/ruby-2.2.0/bin/ruby
/usr/bin/ruby
を"require"を使用するときのパス検索/ロードの場所。今、私は1つのバージョンを削除する必要があるのか、それとも両方が必要なのか不思議です。 OS X Yosemite(10.10.2)を実行していて、ruby -v
を実行すると、次のように表示されます。ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
両方のバージョンが必要ですか?私は1つのルビーバージョンを削除する必要がある場合、どのバージョンを削除し、どのようにする必要がありますか?私はできるだけ徹底的にしようとしましたが、私が提供する他の情報を教えてください。
編集1:はい、両方のファイル(stack.rb、stacklike.rbは)同じディレクトリに
編集2以下のとおりです。私はrequire_relative "stacklike" を使用してみましたが、それはどちらか動作しません。私はまた、&ルビーをusr/binから削除しようとしましたが、そこには成功しませんでした - 私はまだ同じロードエラーを取得します。
編集3:ruby stack.rb
を実行するときrvm install ruby 2.3.0
を実行した後、私は、次の出力負荷エラーを受信:require_relative 'stacklike'
編集4:
`/Users/myName/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- stacklike (LoadError)
from /Users/myName/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from stack.rb:2:in `<main>'`
I 2にstack.rbラインを変更
Iが実行されましたrvm implode
、次にbrew install ruby
。今度は同じエラーが発生しますが、別のパスから/usr/local/Cellar/ruby/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require ':そのようなロードできませんファイル - stacklike(LoadError)/usr/local/Cellar/ruby/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55から:require 'from stack.rb:2 :
"に(今私はrvm
を逃したが、少なくともwhich -a ruby
出力usr/local/bin/ruby
よ)
編集5(FINAL EDIT):私はちょうど&ファイルに新しいディレクトリを作成し、今では何とか動作しますが、ルビーを再インストールしました。あなたのお手伝いをしてくれてありがとう。&!
は、同じディレクトリに 'stack.rb'と' stacklike.rb'ですか? –
@ sagarpandya82はい、両方のファイルが同じディレクトリにあります – user1234
ので、/ usr/binから 'ruby'と' gem'を削除してください –