我正在Sinatra构建一个Web应用程序,我在/ lib / checkers /
中有一堆文件我目前要求他们这样做:
require File.expand_path(File.dirname(__FILE__) + '/lib/checkers/board.rb')
require File.expand_path(File.dirname(__FILE__) + '/lib/checkers/checker.rb')
这看起来很蠢,但我已经尝试了
require '/lib/checkers'
或
require '/lib/checkers/'
或
require File.expand_path(File.dirname(__FILE__) + 'lib/checkers/')
和其他变体一样,但似乎没有任何效果。你能帮忙吗?
答案 0 :(得分:4)
require_relative 'lib/checkers/board'
require_relative 'lib/checkers/checker'
这就是我一直这样做的方式。它位于我的主应用程序文件中,该文件始终位于根目录中。我不确定它将如何从其他文件中运行,但我相信它将与调用文件相关。
此外,settings.root
将返回您应用的根目录,无需任何地方File.dirname(__FILE__)
。
这可以在Ruby 1.9中使用,而不需要通过上述注释中的任何特殊技术。
如果您使用的是1.8,则可以执行此操作
require './lib/checkers/board'
require './lib/checkers/checker'
1.8的其他技巧列于this question。