我有一个叉子 Rails 仓库 在github上,我有一个基于rails-2-3-stable分支的分支。我想与我的应用程序一起基于 Rails 2.3.10 进行一些更改。我们使用捆绑器,并且该应用程序使用 SVN 进行版本控制。

在 Rails 的 github 分支中使用我的分支并跨机器共享的最干净的方法是什么?

一种方法是这样的:

如何安装边缘导轨?

这可以工作,但感觉不够干净,因为当存储库更改时,我们必须手动更新供应商版本,并且我们必须将 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, ,但是启动应用程序时,它在加载路径中找不到rails:

/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)!

有帮助吗?

解决方案

巴鲁的回答为我指明了正确的方向,但这里有更多细节:

有必要为 Rails repo/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

请注意,您不能使用“railties”,它仅定义“rails”gem。

顺便说一句,在处理此问题时,将 Gemfile 指向我的本地存储库要容易得多,这是通过这种方式完成的(rails 是克隆存储库的文件夹,比 Gemfile 低一级):

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在相应的Rake文件指定。

否则你可以使用:

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

编辑:这意味着,打捆要求gemspec要到位。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top