Bundler を使用したプロジェクトで Rails のフォーク内のブランチを使用する方法

StackOverflow https://stackoverflow.com/questions/4043089

質問

のフォークを持っています レールリポジトリ github には、rails-2-3-stable ブランチに基づいたブランチがあります。私のアプリと一緒に、Rails 2.3.10に基づいていくつかの変更を開発したいと考えています。バンドラーを使用しており、アプリは SVN でバージョン管理されています。

Rails の github フォークでブランチを使用し、これをマシン間で共有する最もクリーンな方法は何ですか?

1 つの方法は次のとおりです。

エッジレールを取り付けるにはどうすればよいですか?

これは機能しますが、リポジトリが変更されたときにベンダーのバージョンを手動で更新する必要があり、git リポジトリを svn にチェックインする必要があるため、十分にクリーンとは言えません。

Gemfile でこれのバリエーションを試してみました。

gem 'rails', '2.3.10', :git => 'git://github.com/traveliq/rails.git', :branch => 'tiq-fixes'
gem 'rails', '2.3.10', :git => 'git://github.com/traveliq/rails.git', :tag => 'v2.3.10'
gem 'rails', '2.3.10', :git => 'git://github.com/rails/rails.git', :tag => 'v2.3.10'

これらはすべて、実行時に最初は機能します bundle install, しかし、アプリを起動すると、ロードパスでレールが見つかりません。

/home/mt/Development/config/boot.rb:57:in `require': no such file to load -- initializer (LoadError)
    from /home/mt/Development/config/boot.rb:57:in `load_initializer'
    from /home/mt/Development/config/boot.rb:117:in `run'
    from /home/mt/Development/config/boot.rb:11:in `boot!'
    from /home/mt/Development/config/boot.rb:130
    from script/console:2:in `re

私の Gemfile.lock エントリは次のようになります。

GIT
  remote: git://github.com/traveliq/rails.git
  revision: 25139ac92cea5b17791d71359bc3ae2a5d526652
  branch: tiq-fixes
  specs:
    rails (2.3.10)

...

DEPENDENCIES

...

rails (= 2.3.10)!

役に立ちましたか?

解決

balu の答えは私に正しい道を示してくれましたが、さらに詳細は次のとおりです。

Rails リポジトリ/2-3-stable ブランチ内のほとんどの gem については、.gemspec ファイルをまとめてまとめる必要がありました。私の見解は、次の場所で確認またはフォークできます。 http://github.com/traveliq/rails/commit/46d9042c9125abbbedfc672f8523d81210f4f320

これを Gemfile に含めるには、次を使用します。

git "git://github.com/traveliq/rails.git", :branch => 'tiq-fixes' do
  gem 'rails'
  gem 'actionmailer'
  gem 'actionpack'
  gem 'activerecord'
  gem 'activeresource'
  gem 'activesupport'
end

「rails」gem のみを定義する「railties」は使用できないことに注意してください。

ちなみに、これに取り組んでいる間、Gemfile をローカル リポジトリに指定する方がはるかに簡単でした。これは次の方法で行われます (rails は、Gemfile の 1 レベル下のリポジトリが複製されるフォルダーです)。

gem 'rails',            :path => 'rails/railties'
gem 'actionmailer',     :path => 'rails/actionmailer'
gem 'actionpack',       :path => 'rails/actionpack'
gem 'activerecord',     :path => 'rails/activerecord'
gem 'activesupport',    :path => 'rails/activesupport'

Rails/Railties .gemspec を定義した後、それらの gem の一部を省略し、gemcutter などから通常利用可能なバージョンをバンドラーに使用させることもできます。

他のヒント

バージョン2.3.10のように見えますが、レールは、そのコンポーネントの.gemspecファイルを持っていませんでした。 代わりに、各gemspec対応するRakefileで指定されます。

それ以外の場合は、あなたが使用することになります:

git "git://github.com/traveliq/rails.git", :branch => 'tiq-fixes', :tag => 'v2.3.10' do
  gem 'actionpack'
  gem 'activesupport'
  gem 'activerecord'
  gem 'activemodel'
  gem 'actionmailer'
  gem 'railties'
end

また参照: http://gembundler.com/git.html

EDIT:バンドラーが所定の位置にあることがgemspecを必要とするということを意味します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top