有没有简单的方法来测试当前目录是否在rails项目中?显然Rails自己测试这个是为了使用rails子命令(generate,scaffold等),所以大概有一种直接的方法来测试它。测试当前目录是否在Rails项目中(bash)
我正在寻找类似的东西test if you're inside a Git repo。
有没有简单的方法来测试当前目录是否在rails项目中?显然Rails自己测试这个是为了使用rails子命令(generate,scaffold等),所以大概有一种直接的方法来测试它。测试当前目录是否在Rails项目中(bash)
我正在寻找类似的东西test if you're inside a Git repo。
经进一步调查,我能够挖掘到rails
命令本身并基于railties
宝石的一部分(<railties>/lib/rails/script_rails_loader.rb
)的解决方案:
#!/usr/bin/env ruby
require 'pathname'
SCRIPT_RAILS = File.join('script', 'rails')
def self.in_rails_application?
File.exists?(SCRIPT_RAILS)
end
def self.in_rails_application_subdirectory?(path = Pathname.new(Dir.pwd))
File.exists?(File.join(path, SCRIPT_RAILS)) || !path.root? && in_rails_application_subdirectory?(path.parent)
end
if in_rails_application? || in_rails_application_subdirectory?
exit(0)
else
exit(1)
end
没有特定于Rails的文件或目录。所以你不能真正知道你是否在rails目录中。
更好的解决方案可以是知道您的Gemfile中是否有轨道或功能gem依赖项。
bundle list | grep 'rail'
我知道你已经有一个解决方案红宝石,但这里有一个用bash写的,应该快一点。
假设你正在使用捆扎机:
grep 'rails' 'Gemfile' >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "It's a Rails project!"
fi
这是段做什么:
grep 'rails' 'Gemfile'
将返回2的状态代码,如果一个名为“的Gemfile”文件没有在当前目录中是。如果找到'Gemfile'但它不包含'rails',grep
将返回状态码1。
对于梁2不捆扎机这应该工作:
if [ -f script/rails ]; then
echo "It's a Rails 2 project!"
fi
所有这一切确实是测试如果脚本/导轨文件存在。
我希望这可以帮助那些希望做到bash而不是ruby的人。
您还可以通过测试脚本/服务器以及脚本/轨道来添加Rails 2兼容性。 – 2012-04-06 22:32:42