6259
`Rails4.2` を使っています。

目的: ActiveJobにキーワード引数を渡せるようになる修正が入り、それを使いたいです。

  1. `bundle update` では、その変更は落ちてきませんでした。

Gemfile は下記です。

```

    gem 'rails', '4.2.0'
    
```

  2. github 上では、その変更が取り込まれています。

<https://github.com/rails/rails/blob/4-2-stable/activejob/CHANGELOG.md>

この場合、下記のように明示的に `github` と `branch` を指定しなければならないのでしょうか？

```

    gem 'rails', git: 'git://https://github.com/rails/rails.git'
             branch: '4-2-stable'
    
```

Rails というビッグネームなので、例外的な状態にせず、Gemfile を綺麗に保ちたいと思っています。
CC BY-SA 3.0
2015-02-10T05:45:40.290
6236
2015-02-12T01:33:12.463
7471
question
ruby-on-rails rubygems
機能の修正が入っていても、バージョン番号が同じときの、Gemfileの書き方をご教授ください。
機能の修正が入ったのは、4.2安定版開発ブランチになります。  
4.2.0には、修正は入っていません。

因みに4.2.0のCHANGELOGはこちらです。  
<https://github.com/rails/rails/blob/v4.2.0/activejob/CHANGELOG.md>

キーワード引数対応のマイルストーンが4.2.1となっています。  
ですので、4.2.1に組み込まれます。  
<https://github.com/rails/rails/issues/18741>

4.2.1がリリースされていない段階で目的を達成したい場合は、Gemfileに明示的に記載するしかないと思います。
CC BY-SA 3.0
2015-02-10T09:45:54.403
6257
2015-02-10T09:45:54.403
8201
6236
answer
まず、開発を追いかける目的以外では、ブランチを直接持ってくる指定はやめた方がいいと思います。特にRailsの4-2-stableブランチは、頻繁に修正が入っているので、bundle
installやbundle updateしたタイミングや環境などで状態が変わってしまい、トラブルの元となる可能性が高いです。  
とりあえずはGemfileはそのままにしておき、一時的にRailsのリポジトリをフォークして、それを手動でインストールすることで回避しておくのがいいと思います。  
どうしてもbundle一発にしたい場合は、とりあえずGemfileはフォーク先を参照するようにしておくのがいいと思います。

ちなみに、フォークしておくのは、

  * 本家のコミットの影響を直接受けないようにする。
  * 間違えて本家にpushしないようにする。
  * 再度本家の追いかけたいときに本家をremoteに追加してpullできるようにする。
  * 独自にタグなどを打って管理する。

などの為です。
CC BY-SA 3.0
2015-02-10T09:47:29.017
6258
2015-02-10T09:47:29.017
7900
6236
answer
質問内に書かれているように、Gemfileにて明示的に指定する方法が良いのではないかと思います。その際に、一旦フォークして利用するという案もあがっていますが、

```

    gem 'rails', git: 'git://https://github.com/rails/rails.git', ref: '03476a6885'
    
```

などとコミットIDまで明示的に指定することで、開発途中で変更が激しいブランチでも環境を固定することは可能です。
CC BY-SA 3.0
2015-02-10T09:54:01.013
6259
2015-02-10T09:54:01.013
3313
6236
answer
該当する修正の規模にもよりますが、1ファイル2ファイル程度ならローカルのlibにコピーしてしまうと言う手もあります。
CC BY-SA 3.0
2015-02-12T01:33:12.463
6346
2015-02-12T01:33:12.463
5793
6236
answer