- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的rvm gem set里安装了一个gem coffee-cup
,ruby-2.1.1@test
路径是/Users/dingxijin/.rvm/gems/ruby-2.1.1@test/gems/coffee-cup-0.0.4
.
然后我打开irb,就像这样:
2.1.1 :001 > puts $:
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/x86_64-darwin12.0
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/vendor_ruby/2.1.0
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/vendor_ruby/2.1.0/x86_64-darwin12.0
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/vendor_ruby
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0
/Users/dingxijin/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/x86_64-darwin12.0
=> nil
2.1.1 :002 > require "coffee-cup"
NameError: uninitialized constant CoffeeCup::Rails
from /Users/dingxijin/.rvm/gems/ruby-2.1.1@test/gems/coffee-cup-0.0.4/lib/coffee-cup/engine.rb:2:in `<module:CoffeeCup>' ..........
ruby 是否从 $LOAD_PATH 目录中搜索 gem?为什么我可以要求coffee-cup
,明明是$LOAD_PATH没有它的目录?
最佳答案
require
的原始“正常”行为就是您所描述的:在 LOAD_PATH
中搜索请求的文件,如果没有找到 LOAD_ERROR
被引发。 Rubygems 通过 replacing the Kernel#require
method 修改此行为.对新的 require
方法的注释解释了会发生什么:
When RubyGems is required, Kernel#require is replaced with our own which is capable of loading gems on demand.
When you call
require 'x'
, this is what happens:
- If the file can be loaded from the existing Ruby loadpath, it is.
- Otherwise, installed gems are searched for a file that matches. If it's found in gem 'y', that gem is activated (added to the loadpath).
The normal
require
functionality of returning false if that file has already been loaded is preserved.
Ruby 默认包含 Rubygems,现在这种新行为已成为常态。
在您的示例中,如果您在从 gem 中请求文件后再次查看加载路径,您应该会看到已添加 gem 的路径。
关于ruby - 为什么我需要 $LOAD_PATH 之外的 gem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23714324/
我知道要添加到 $LOAD_PATH 的路径就可以了 $LOAD_PATH.unshift(path) 但是我必须将这一行添加到我编写的每个程序中。无论如何要将它添加到系统级别? 我尝试搜索一下 Ru
这其实是关于这个问题的问题:Adding a directory to $LOAD_PATH (Ruby) 将目录添加到 $LOAD_PATH 时会发生什么?是不是像JavaScript一样在执行上下
我见过两种常用的技术,用于将当前正在执行的文件的目录添加到 $LOAD_PATH(或 $:)。如果您不使用 gem,我会看到这样做的好处。显然,一个似乎比另一个更冗长,但有理由优先考虑另一个吗? 第一
我安装了新的稳定 Ruby 版本,当我开始安装 gems 时,我发现在成功安装 gems 后,它们的路径没有添加到 Ruby 加载路径中。 这个问题的原因是什么?我怎样才能实现它? 谢谢。 这是我的环
我在我的rvm gem set里安装了一个gem coffee-cup,ruby-2.1.1@test 路径是/Users/dingxijin/.rvm/gems/ruby-2.1.1@test/ge
我需要知道我的 Ruby 加载路径中有什么,所以我这样做了: $ ruby -e "puts $LOAD_PATH" 它没有打印出任何东西,这是我没有预料到的。所以我尝试了这个: $ ruby -e
在我的 Cucumber 场景中,如果我在目标 Rails 应用程序文件夹中调用 rake db:schema:load,我会得到 Cucumber 进程的 $LOAD_PATH 而不是 Rails
假设我编译自己的新 Ruby (MRI 1.9.3),默认的 LOAD_PATH 是什么,它是如何计算的? 最佳答案 在我的机器上,初始加载路径如下所示: $ ruby -e 'puts $LOAD_
我想通过修改 LOAD_PATH 来帮助 Julia 找到我的 .jl 文件。多变的: julia> readdir() 1-element Array{String,1}: "test.jl" s
我正在尝试在 Jekyll 项目中配置 jQuery。我在引用我的脚本标签时遇到问题(如果我包含 CDN 就可以了)。 我正在阅读一些 github-pages 可能无法处理您的 node_modul
实际上,我想知道我是否可以纯粹通过使用 Ruby 的 C 库附加到 $LOAD_PATH。这样做的原因是我有一个书面扩展(使用 Rice 但这不是非常重要)并且我希望它能够与其他几个在他们自己的目录中
我最近通过源代码编译在 OS X 10.8.3 上安装了 Ruby 2.0.0。我检查了版本 $ ruby --version ruby 2.0.0p195 (2013-05-14 revision
问题:我正在使用 gulp-sass 并且想定义一个 load_path 这样我就不必有很长的 @import 规则 voor bower 依赖项,例如 @import "normalize" 代替
我正在尝试像这样使用我刚刚安装的 gem(通过 sudo gem install excelsior) require 'rubygems' require 'excelsior' ... 这在 ir
我想将 vendor/gems/gems/**/lib 中的所有内容都放到加载路径上。我有办法做到这一点,但感觉很笨拙。现在,我正在通过: base = File.expand_path(File.j
我使用 MacPorts 来管理我的 Ruby/Rails/Gems 安装。最近在执行 gem install wirble 后,当我启动 irb 实例时 wirble 无法加载。这是输出: $ ir
我发现ruby加载路径是一个数组,很多项目都是这样使用的: $:.unshift(File.expand_path("../../lib", __FILE__)) 可以将本地文件添加到ruby路径数
我的 Julia REPL 帮助为 LOAD_PATH 提供了以下内容: help?> LOAD_PATH search: LOAD_PATH LOAD_PATH An array of pa
Ruby 1.9.2 的最新变更集不再生成当前目录 .你的一部分 LOAD_PATH .我有很多 Rakefile 假设 .是 LOAD_PATH 的一部分,所以这打破了他们(他们报告所有基于项目路径
我是一名优秀的程序员,十分优秀!