Ruby 1.9.2的最新变更集不再使当前目录.成为您的目录LOAD_PATH.我有一些非常重要的Rakefiles假设它.是其中的一部分LOAD_PATH,所以这打破了它们(他们报告"没有这样的文件加载"所有基于项目路径的require语句).这样做有什么特别的理由吗?
至于一个修复,添加$: << "."到处都有效,但看起来非常hacky,我不想这样做.使Rakefiles 1.9.2+兼容的首选方法是什么?
当我需要一个文件时,例如(称为st.rb):
require 'rubygems'
require 'mongrel'
class TestHandler < Mongrel::HttpHandler
def process(request, response)
response.start(200) do |head, out|
head["Content-Type"] = "text/html"
out.write "Hello, World!\n"
end
end
end
Run Code Online (Sandbox Code Playgroud)
在irb我得到:
>> require 'st.rb'
LoadError: cannot load such file -- st.rb
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from (irb):3
from /usr/local/bin/irb:12:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我可能有一个线索,但这只是猜测.我的ruby版本/安装位置是:
/usr/local/bin/ruby 和 ruby 1.9.3p0
然而,红宝石宝石在/usr/local/lib/ruby/1.9.1,它在谈论版本1.9.1.这可能是原因吗?
谢谢!
更新很 奇怪,当我在IRB中键入'put RUBY_VERSION'时,我得到了这个:
puts RUBY_VERSION
1.9.3
NoMethodError: undefined method `write' for nil:NilClass
from /usr/local/lib/ruby/1.9.1/irb.rb:311:in `printf'
from /usr/local/lib/ruby/1.9.1/irb.rb:311:in `output_value'
from /usr/local/lib/ruby/1.9.1/irb.rb:160:in `block (2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行使用rspec的基本启动示例:http://rspec.info/.
当我在命令提示符下键入时
ruby bowling_spec.rb
我收到以下错误
测试
# bowling_spec.rb
require 'bowling'
describe Bowling, "#score" do
it "returns 0 for all gutter game" do
bowling = Bowling.new
20.times { bowling.hit(0) }
bowling.score.should == 0
end
end
Run Code Online (Sandbox Code Playgroud)
码
# bowling.rb
class Bowling
def hit(pins)
end
def score
0
end
end
Run Code Online (Sandbox Code Playgroud)
错误信息
internal:lib/rubygems/custom_require:29:in
require': no such file to load -- bowling (LoadError) from <internal:lib/rubygems/custom_require>:29:inrequire'from bowling_spec.rb:2:in`
我正在研究Zed Shaw的"学习Ruby艰苦之路"练习25
http://ruby.learncodethehardway.org/ex25.html
当我导航到保存ruby文件ex25.rb的目录并启动IRB时,我收到以下错误:
Larson-2:~ larson$ cd Ruby
Larson-2:Ruby larson$ ls
ex25.rb
Larson-2:Ruby larson$ irb
ruby-1.9.2-p290 :001 > require 'ex25'
LoadError: no such file to load -- ex25
from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from (irb):1
from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
ruby-1.9.2-p290 :002 >
Run Code Online (Sandbox Code Playgroud)
似乎require命令在这里不起作用.有什么我想念的吗?
我也尝试按照建议要求'./25'并得到以下错误:
Larson-2:Ruby larson$ irb
ruby-1.9.2-p290 :001 > require './ex25'
SyntaxError: /Users/larson/Ruby/ex25.rb:1: invalid multibyte char (US-ASCII)
from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from (irb):1
from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud) 我在目录中有一个文件test/.该文件是"test.rb".
当我启动IRB并输入:
require 'test'
require_relative 'test'
Run Code Online (Sandbox Code Playgroud)
它返回:
LoadError: cannot load such file -- test
Run Code Online (Sandbox Code Playgroud)
和:
LoadError: cannot infer basepath
Run Code Online (Sandbox Code Playgroud)
我的Ruby搞砸了吗?