为什么当前目录不在我的 Ruby 路径上? [复制]

2024-01-22

我当前的工作目录不在我的 Ruby 路径上有什么原因吗?

考虑:

~:499$ irb
ruby-1.9.2-p136 :002 > puts $:
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0
 => nil 

这真的很困扰我,因为 require 没有像我想象的那样工作(尽管我是 ruby​​ nuby):

require 'some_file_that_I_know_darn_well_is_in_pwd.rb'

如果我追加'.'到最后,要求就按我的预期工作了。

我缺少什么?


UPDATE:

嗯!现在我遇到了一个新问题。考虑:

ruby-1.9.2-p136 :010 > `ls`
 => "start.rb\n" 
ruby-1.9.2-p136 :011 > require_relative 'start'
LoadError: cannot infer basepath
    from (irb):11:in `require_relative'
    from (irb):11
    from /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in `<main>'

现在怎么样了?


Ruby 1.9.2 中引入的 Powers明确的改变 http://www.ruby-lang.org/en/news/2010/08/18/ruby-1-9.2-released/这样工作目录就不再位于 Ruby 路径中。我以为这是世界末日,是一件可怕的事情,直到我了解到require_relative。我的应用程序往往如下所示:

require 'some_gem'
require 'another_gem'
require_relative 'lib/init'

进而lib/init.rb可以有:

require_relative 'lib1' # this is lib/lib1.rb
require_relative 'lib2' # this is lib/lib2.rb

这是蜜蜂的膝盖,解决了我过去需要不同工作目录中的相同文件时遇到的各种问题。

Edit:不幸的是(由于我不知道也没有调查过的原因)require_relative不专门在 irb 中工作。为此,您可以:

  1. 做你最初描述的事情:要么$: << '.' or $:.unshift '.', or
  2. 您可以使用load 'myfile.rb' or require './myfile'反而:

    irb(main):001:0> Dir['*.rb']
    => ["a.rb", "bar.rb", "foo.rb", "prime.rb", "tmp.rb"]
    
    irb(main):002:0> require 'a'
    LoadError: no such file to load -- a
      from <internal:lib/rubygems/custom_require>:29:in `require'
      from <internal:lib/rubygems/custom_require>:29:in `require'
      from (irb):2
      from /usr/local/bin/irb:12:in `<main>'
    
    irb(main):003:0> require_relative 'a'
    LoadError: cannot infer basepath
      from (irb):3:in `require_relative'
      from (irb):3
      from /usr/local/bin/irb:12:in `<main>'
    
    irb(main):004:0> load 'a.rb'
    a
    => true
    
    irb(main):005:0> require './a'
    a
    => true
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么当前目录不在我的 Ruby 路径上? [复制] 的相关文章

随机推荐

  • 为库模块添加 rspec 测试似乎没有拾取期望和匹配器

    我正在向我的应用程序添加更多 rspec 测试 并希望测试位于 lib scoring methods rb 中的 ScoringMethods 模块 所以我添加了一个 spec lib 目录并在那里添加了 rating methods s
  • 从 Collection 更改为 SortedSet

    我正在将 Collection 更改为 SortedSet 因为我需要它始终保持与创建它们时一致的顺序 我已将模型属性从 OneToMany cascade CascadeType ALL mappedBy contentId privat
  • 如何使用 MailChimp API 发送电子邮件

    我正在 nodejs 中创建一个应用程序来使用 MailChimp 发送电子邮件 我尝试过使用https apidocs mailchimp com sts 1 0 sendemail func php https apidocs mail
  • 在 javascript/jQuery 中将字符串转换为数字

    一直在尝试将以下内容转换为数字
  • 将 dataReader 转换为字典

    我尝试使用 LINQ 将一行转换为字典 fieldName gt fieldValue return Enumerable Range 0 reader FieldCount ToDictionary
  • React 原生性能问题

    我使用 coincap api 首先获取大约 1500 多种加密货币的数据 然后使用 Web socket 来更新加密货币的更新值 我在这里使用 redux 来管理我的状态 在我里面componentDidMount 我正在打电话还原动作
  • QTableView排序信号?

    I use QTableView QStandardItemModel显示一些数据 存储在其他数据结构中的数据 这个表视图是sortable 由于它是可排序的 因此在对该模型进行排序时 我还需要对存储数据的顺序进行排序 我尝试为排序信号实现
  • 将数据上传到数据库时出现问题

    我在将数据发送到数据库时遇到问题 问题是每次我刷新页面时它都会自动发送以前的数据 任何人都可以帮忙吗 if isset POST Posts if isset POST t isset POST i isset POST P title P
  • Bootstrap 3 网格可以扩展吗?

    我正在开发一个项目 我们将保留 Bootstrap less 文件不变 我们也不想在 HTML 中使用 Bootstrap 类 因为我们将来可能不会使用它 我正在尝试使用 扩展 功能将我们的类名与样式表中的 BS 版本分组 除了网格列之外
  • 如何在 Laravel 中将模型事件与查询生成器一起使用

    我在模型的静态函数启动方法中使用诸如 static saving static saved 等模型事件 当用户保存新帖子时效果很好 但是当我执行以下操作时 post where id post id gt update array publ
  • 在纯 CSS 中将子级的宽度设置为父级的高度

    我可以设置width of a child div等于它的parent div height在纯CSS中 JsFiddle 演示 http jsfiddle net evk9a9ma 到目前为止 我一直在 jQuery 中做 child d
  • Z3Py 中最大值的模型不正确

    我想找到一个表达式的最大间隔e对于所有 x 都成立 编写这样的公式的方法应该是 Exists d ForAll x in d d e and ForAll x not in d d e 为了得到这样一个d 公式f在 Z3 中 看上面的 可能
  • 使用maven archetype创建新项目如何指定自定义文件夹名称

    我现在正在尝试创建一个 Maven 原型 它使用spring mybatis框架 有一个mybatis xml文件 src main resources archetype resources src main resources sql
  • 如何以编程方式设置layout_weight?

    免责声明 据我所知这个问题到目前为止 XAMARIN ANDROID 还没有答案 已经回答过多次了安卓 Java https stackoverflow com questions 4641072 how to set layout wei
  • 时间校正 Verlet 积分和太大的时间步长

    我使用在这里找到的时间校正 Verlet 集成 http www gamedev net page resources technical math and physicals a simple time Corrected verlet
  • 在 Git 中,长哈希和短哈希有什么区别?

    这是长 Git 哈希值 提交 c26cf8af130955c5c67cfea96f9532680b963628 合并 8654907 37c2a4f 作者 尼古拉斯 日期 2017 年 4 月 26 日星期三 13 28 22 0400 这
  • 在 Django 中将 numpy 数组显示为图像

    我是 Django 框架的新手 我正在构建一个网站 该网站从用户那里获取图像 然后处理图像并返回到 numpy 数组 处理后的图像 我想将 numpy 数组显示为图像 我怎样才能做到这一点 感谢您的阅读并提供帮助 索引 html
  • 访问 OKHttp 响应正文

    所以我需要弄清楚如何在第二个响应中访问我从第一个响应中获得的值 我认为我可以将其存储到一个变量中并在另一个请求中访问它 然而 情况似乎并非如此 这是给我带来问题的一点 因此 我的第一个请求是获取一个令牌 然后我需要在第二个请求中使用存储在
  • 从 MYSQL 表中选择添加前缀的最大数字

    不幸的是 我有一张桌子 我无法以任何方式进行更改 并且必须使用我所拥有的东西 mysql 表有一个标记为 customer id 的字段 它有 2 个前缀字母和一个 4 值数字 前任 BI8392 HE8492 WO1293 如何选择具有特
  • 为什么当前目录不在我的 Ruby 路径上? [复制]

    这个问题在这里已经有答案了 我当前的工作目录不在我的 Ruby 路径上有什么原因吗 考虑 499 irb ruby 1 9 2 p136 002 gt puts Users mrberryman rvm rubies ruby 1 9 2