我想要求一个rake文件,我已经在另一个文件中创建了。这两个文件位于两个不同的目录中。我在第一个文件的顶部需要require后面的引号内的第二个文件的名称。 它告诉我,它无法加载这样的文件。 这是否意味着它在不同的目录中找不到它? 我试图坚持在第二个文件的完整路径,但它仍然无法加载文件。 有谁知道我可以如何将第二个文件加载到第一个文件中?如何从另一个目录需要一个ruby文件
在此先感谢
我想要求一个rake文件,我已经在另一个文件中创建了。这两个文件位于两个不同的目录中。我在第一个文件的顶部需要require后面的引号内的第二个文件的名称。 它告诉我,它无法加载这样的文件。 这是否意味着它在不同的目录中找不到它? 我试图坚持在第二个文件的完整路径,但它仍然无法加载文件。 有谁知道我可以如何将第二个文件加载到第一个文件中?如何从另一个目录需要一个ruby文件
在此先感谢
从文档:它建议使用require相对。 Docs
require_relative
补充了内置方法的要求,允许您加载与包含require_relative
语句的文件相关的文件。
当您使用require
加载文件时,您通常会访问系统中已正确安装并可访问的功能。 require不能提供在项目代码中加载文件的好方案。在开发阶段,访问测试数据,甚至是访问在项目中“锁定”的文件,这些文件不打算供外部使用,这可能很有用。
例如,如果您有测试下他们在“测试”目录单元测试类和数据“的测试/ data”目录,那么你可能会使用这样的线在测试案例:
require_relative "data/customer_data_1"
require
将仅在一组称为“加载路径”的位置搜索文件。您可以通过在脚本或irb会话中使用全局变量$LOAD_PATH
来查看加载路径。如果它不在加载路径中,则不会找到它。
Ruby 1.9引入了require_relative
,它使用当前文件的位置作为起点进行搜索。
# Will search $LOAD_PATH for file.
require 'test/unit'
# Notice the '/' which tells it to look in the
# 'test' folder for a file named 'unit.rb'
# Will look in current folder of file
require_relative 'my_folder/my_file'
# Will search in 'my_folder' for the file 'my_file.rb'
请注意,require_relative
将无法在irb中工作。
另请注意,如果您确实想使用require
,则可以通过向$LOAD_PATH
变量添加位置来启动脚本。
$LOAD_PATH << File.join('users', 'yourusername', 'your_folder')
# or
$LOAD_PATH << File.dirname(__FILE__)
# The second one enables you to move the file around on your
# system and still operate correctly
require 'my_file'
下面是Ruby的文档一些附加的文档
感谢您的一个很好的答案,但只有一个问题是什么在括号内? 它是用户名,用户名和文件夹路径 – thedarkknight228
这只是一个例子。我用它作为Linux的主目录的一个例子。 File.join('C:','Users','Charles','blahblah')甚至是File.dirname(__ FILE __)'就可以轻松地添加当前文件所在的文件夹位于负载路径上。 'dirname'可能会更好,因为它可以让你移动文件并保持工作。 –
试图加载Rake文件时不需要工作吗? – thedarkknight228
也可以这样做:
require './something.rb'
从当前目录包含。
你有没有试过'require'directory/other_file''? –
是的,我已经尝试过。我给它的完整路径,但仍然无法加载它 – thedarkknight228
尝试require_relative –