我试图在运行irb时包含一个源代码文件,但是irb无法找到它。
例如,假设我位于终端中的以下目录中:
/dan/rubyapp/假设我在/dan/rubyapp/中有一个名为"firstapp.rb“的文件
我启动irb,并在irb提示符中键入
> require "firstapp.rb"但文件找不到。如果我输入"Dir.pwd“,它显示为
/dan/rubyapp/唯一能让“要求”工作的方法是,如果我包含这样的完整路径。
> require "/dan/rubyapp/firstapp.rb"只有这样我才能让它起作用吗?我在网上看到的所有教程都只是“需要file_name”,所以我假设它会起作用。
以下是$的输出: at
ruby-1.9.2-p0 > $:
=> ["/Users/Daniel/.rvm/gems/ruby-1.9.2-p0/gems/wirble-0.1.3/bin",
"/Users/Daniel/.rvm/gems/ruby-1.9.2-p0/gems/wirble-0.1.3/lib",
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1",
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.4.0",
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby",
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby/1.9.1",
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.4.0",
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby",
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1",
"/Users/Daniel/.rvm/rubies/ruby-
1.9.2-p0/lib/ruby/1.9.1/x86_64-darwin10.4.0"] 发布于 2010-09-21 10:43:40
有几件事要尝试:
1)从需求的末尾删除.rb,这样您就有了:
require 'firstapp'您通常不会将.rb添加到一个需求(只添加到一个负载)-查看这里的更多细节:http://www.fromjavatoruby.com/2008/10/require-vs-load.html
2)如果失败,请确保当前目录位于加载路径上--在irb中执行:
p $:它将打印出您的红宝石加载路径-检查一个条目为“。(我的是最后一条)
发布于 2011-01-18 21:54:48
问题是当前的工作目录不再在您的路径中(从Ruby1.9.2开始)。解决这个问题有几种不同的方法。
1)在ruby文件本身中,可以使用require_relative方法而不是require方法。这将加载相对于包含require_relative方法:http://extensions.rubyforge.org/rdoc/classes/Kernel.html的文件的loaction的文件。
require_relative 'firstapp.rb'然而,这在irb中是行不通的。
2)另一个选项是将当前路径包含在对require方法的参数中。这将在irb或红宝石文件中工作。例如:
require './firstapp.rb'这在ruby中实现的原因是,如果路径中的不同目录中有不同的同名文件(类似于*nix不包含当前目录),则避免无意中要求错误的文件“。在它的道路上)
https://stackoverflow.com/questions/3759179
复制相似问题