Ruby on rails 模块混合输入中的#require方法 #stacklike.rb文件 模块堆栈式 def堆栈 @堆栈| |=[] 结束 def添加到def堆栈(obj) 堆栈推送(obj) 结束 def从def堆栈中取出def stack.pop 结束 结束 #stack.rb文件 需要“stacklike” 类堆栈 包括Stacklike 结束 s=Stack.new s、 将_添加到_堆栈(“项目一”) s、 将_添加到_堆栈(“第二项”) s、 将_添加到_堆栈(“第三项”) 放置“当前在堆栈上的对象:” 把s.stack take=s.从堆栈中取出 放置“已删除此对象:” 放 将“现在在堆栈上:” 把s.stack ruby stack.rb => /Users/jchu773/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:“require”中:无法加载此类文件--stacklike.rb(LoadError) from/Users/jchu773/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:in'require' from stack.rb:1:in`'
大家好,我现在正在读大卫·布莱克的《基础扎实的红宝石家》,我现在正在学习模块。我在他的练习示例中进行了介绍,但每当我使用#require方法时,就会弹出上面的错误,有人知道原因吗?require\u relative需要来自相对路径的文件 require file需要您指定确切(绝对)路径 例如。 我在一个目录中有一个app.rb和一个module.rb(c:/users/ruby/app/this\u app/) require_relative查找运行app.rb的模块文件Ruby on rails 模块混合输入中的#require方法 #stacklike.rb文件 模块堆栈式 def堆栈 @堆栈| |=[] 结束 def添加到def堆栈(obj) 堆栈推送(obj) 结束 def从def堆栈中取出def stack.pop 结束 结束 #stack.rb文件 需要“stacklike” 类堆栈 包括Stacklike 结束 s=Stack.new s、 将_添加到_堆栈(“项目一”) s、 将_添加到_堆栈(“第二项”) s、 将_添加到_堆栈(“第三项”) 放置“当前在堆栈上的对象:” 把s.stack take=s.从堆栈中取出 放置“已删除此对象:” 放 将“现在在堆栈上:” 把s.stack ruby stack.rb => /Users/jchu773/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:“require”中:无法加载此类文件--stacklike.rb(LoadError) from/Users/jchu773/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:in'require' from stack.rb:1:in`',ruby-on-rails,ruby,Ruby On Rails,Ruby,大家好,我现在正在读大卫·布莱克的《基础扎实的红宝石家》,我现在正在学习模块。我在他的练习示例中进行了介绍,但每当我使用#require方法时,就会弹出上面的错误,有人知道原因吗?require\u relative需要来自相对路径的文件 require file需要您指定确切(绝对)路径 例如。 我在一个目录中有一个app.rb和一个module.rb(c:/users/ruby/app/this\u app/) require_relative查找运行app.rb的模块文件 require\
require\u relative“module”
查找我运行app.rb(此\u app/)的目录
require“module(.rb)”甚至可能需要您指定我相信的完整路径和扩展名。我不确定扩展名,但我100%确定它需要完整的绝对路径
require”/users/ruby/app/this_-app/module(.rb)
require
需要一个绝对路径,但您可以将当前目录中的require与require./stacklike“
一起使用require\u relative
使用相对于当前目录的路径,因此require\u relative“stacklike”
也可以工作
一般来说,通过向Ruby加载路径添加一个目录来加载源文件,然后执行require“source\u file”
。Rubygems增强了要求
,因此它可以从您安装的gems加载文件;这就是错误消息的原因:
rubygems/core\u ext/kernel\u require.rb:54:in'require':无法加载这样的文件--stacklike.rb(LoadError)
来自Rubygems,它假设您正在尝试加载一个名为“stacklike”的gem。当您将
require
更改为require\u relative
时,它是否有效?如果是这样,你想知道区别是什么,这是一个很好的资源。
#stacklike.rb file
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 file
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/jchu773/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- stacklike.rb (LoadError)
from /Users/jchu773/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from stack.rb:1:in `<main>'