如果我想require在Ruby中使用相关文件并且希望它在1.8.x和> = 1.9.2中工作,那么最佳实践是什么?
我看到几个选项:
$LOAD_PATH << '.'忘记一切$LOAD_PATH << File.dirname(__FILE__)require './path/to/file'RUBY_VERSION<1.9.2,然后定义require_relative为require,require_relative随后在需要的地方使用require_relative已存在,如果已存在,请尝试按上一种情况继续操作require File.join(File.dirname(__FILE__), 'path/to/file')
Run Code Online (Sandbox Code Playgroud)它们似乎不能在Ruby 1.9中工作,因为,例如:$ cat caller.rb
require File.join(File.dirname(__FILE__), 'path/to/file')
$ cat path/to/file.rb
puts 'Some testing'
$ ruby caller
Some testing
$ pwd
/tmp
$ ruby /tmp/caller
Some testing
$ ruby tmp/caller
tmp/caller.rb:1:in 'require': no such file to load -- tmp/path/to/file (LoadError)
from tmp/caller.rb:1:in '<main>' …Run Code Online (Sandbox Code Playgroud)您希望Ruby(以及更常见的Ruby社区)改进的内容是什么?
我读到某个地方,Ruby是Smalltalk和LISP的爱孩子,Perl小姐是保姆.
我非常尊重Ruby的父母,但我不确定我是否喜欢Perl小姐对孩子的影响.具体来说,我不喜欢预定义的变量:我需要一个备忘单来了解它们的含义.你可以说"只是不要使用它们".好吧,我不......但其他人也这样做.当我在网上下载插件时,如果我需要去触摸源代码,我别无选择,只能获取我的备忘单.我只是希望他们能从语言中删除那些.
另外,我认为Ruby太过移动了.我的代码在每次新的Ruby升级时都会中断,即使是在次要版本上.Ruby on Rails和我使用过的大多数Rails插件也是如此:它们只是一直在变化,似乎没有人关心这些变化是否会破坏一切.恕我直言,虽然我喜欢Ruby中的很多东西,但这种缺乏稳定性几乎是一个显示阻碍.
我有一个RSpec测试/lib/classes,需要访问一个zip文件(没有上传).该文件存储在/spec/fixtures/files/test.zip.如何输入正确的路径以使其与环境无关,即没有绝对路径?