背景
最初にこの質問の背景を少し説明します。最近、Ruby on Rails にはセキュリティ上の問題がいくつかあります。そのため、プロジェクトの Rails バージョンを更新する必要があります。いくつかある場合、手動で行うとすぐに古くなります...だから、このためのトールタスクを作成できると考えました。
質問
これでうまくいきます!しかし!Rails の新しいバージョンをインストールするときは、プロジェクトごとに .rvmrc ファイルを尊重する必要があります。このスクリプトをすぐにオープンソース化してほしいのですが、最初に .rvmrc ファイルを尊重しないという問題に取り組みたいと思っています。
したがって、ディレクトリを変更してRailsバージョンを更新するときに、適切なRVM rubyバージョン/gemsetを使用する方法が必要です。
これはどのように行われるのでしょうか?シェルに関係なく、Mac と Linux で動作するように Ruby スクリプトから実行できますか (zsh サポートに関する回答が見つかりましたが、他のすべてのシェルはどうですか?)
簡単なコード例:
#Scan the base directory down for Gemfiles
gem_files = File.join("**", "Gemfile")
Dir.glob(gem_files){|gemfile|
project_folder = File.dirname(gemfile)
puts "Found Gemfile in #{project_folder}"
Dir.chdir(project_folder) do
#TODO: Respect/load the rvmrc file in this directory
update_gem_file(project_folder) #example
run 'bundle update rails' #<--- needs to be done in the RVM gemset
end
}
私がやろうとしていることのアイデアをあなたに与えるためだけに。