2013-07-15 112 views
1

这是针对我正在尝试并希望最终创建一个gem的Rails CLI。如何检测当前工作目录是否为Rails项目根目录

任何人都有一个正则表达式的想法或类似的方式来确定当前的工作目录是否是rails项目的rails根目录?

def check_current_directory 
    current_directory = Dir.getwd 
    if current_directory # How to determine if inside Rails root? 
    proceed 
    else 
    abort("You must be in the root of your Rails app to use this gem") 
    end 
end 

任何帮助或想法表示赞赏

+0

为什么不忽略当前目录和'chdir'到你想要的位置? –

+0

@ muistooshort这会更困难。为了方便用户,我需要root来计算路径。有点复杂的解释,但谢谢你的建议。 – fontno

回答

5

This是如何Rails的自身做到这一点。基本上它检查Rails可执行文件是否存在,例如'bin/rails','script/rails'。

+0

谢谢,这正是我所寻找的 – fontno

+0

链接已损坏。建议: http://edgeapi.rubyonrails.org/classes/Rails/AppRailsLoader.html#method-i-exec_app_rails –

0

你总是可以得到利用Rails.root Rails项目的根路径。

答案是:if current_directory == Rails.root.to_path

+0

和/或使用'File.dirname(__ FILE __)',或者在Ruby 2.0中,'__dir__'。 –

+0

@railscard我没有在Rails中包含任何东西,而是尝试从应用程序外部将文件等注入到现有的Rails应用程序中。所以我不认为我可以访问'Rails.root',但我会看看它。感谢您的建议 – fontno

相关问题