Ruby:如何从完全独立的文件树中请求文件

时间:2014-01-27 17:03:48

标签: ruby-on-rails ruby file path require

对于我想在Rails应用程序中引用的一些Ruby脚本,我有两个单独的路径。第一个文件是Rails.root/lib/assets/myscript.rb,第二个文件位于Rails.root/resources/repo/lib/myotherscript.rb下。我如何在myotherscript中引用myscript?我已经知道要求相对路径等文件,但是如何从完全独立的文件树中完成引用?

1 个答案:

答案 0 :(得分:0)

斯特凡说。
您可以使用require_relative来加载任何文件树中的任何文件。

外观:

 $ cat /etc/hello.rb 
 module Hello
   def say_hello
     puts "Hello"
   end 
 end

==============================

 $ cat /Users/amalrik/code/use_hello.rb 
 require_relative '/etc/hello'

 include Hello

 say_hello

==============================

 $ ruby use_hello.rb 
 Hello

编辑: 在这里,您可以查看rails上下文中的示例,并与您的解决方案进行比较: https://github.com/amalrik/require_relative_on_rails

编辑: 我只是意识到如果指定完整路径,require也会有效。所以我建议仔细检查你的代码是否有错别字。看:

 $ cat /etc/hello.rb 
 module Hello
   def say_hello
     puts "Hello"
   end 
 end

==============================

 $ cat /Users/amalrik/code/use_hello.rb 
 require '/etc/hello'

 include Hello

 say_hello

==============================

 $ ruby use_hello.rb 
 Hello

有关ruby加载路径的更详细说明,我建议阅读:$: == $LOAD_PATH