2013-06-04 23 views
14

TLを構築; DR:見つからないファイルの後

は、既存のgitリポジトリ内のバンドルを実行しないでください。奇妙なことはエラーメッセージなしで起こります。

元の質問:私は、このチュートリアルの手順を適合させることにより宝石構築した

:最後のステップとして

http://net.tutsplus.com/tutorials/ruby/gem-creation-with-bundler/

を、私は宝石が.gemspec

を構築し実行してきました

これは成功しますが、私が宝石をインストールすると、私のコードを含む重要なファイルが宝石に見つかりません。同じ(lib)ディレクトリにある別のファイル "version.rb"は、gemに存在します。

これをデバッグする方法がわかりません...どのようにbundleler/gem buildがどのファイルを宝石に含めるかを決めていますか?

編集:

私のワークフローは次のとおりです。

gem build <project_name>.gemspec 
gem unpack <project_name> 
=> confirm file does not exist in <unpacked>/lib/ 

gem install <project name> 
=> confirm file structure in ~/home/stefan/.rvm/... contains gem, but does not contain desired file 

編集2 /解像度

私は最終的にリモートにすべての私のコードをコミットすることで、この作業を取得することができましたリポジトリを作成し、クリーンなクローンを作成し、宝石を構築します。新しい宝石にはすべての必要なファイルが含まれていました。

歴史のビット...私はもともとコードを作成し、それを宝石を作ることを考えた前に託しました(これは私の最初の宝石です)。私はの中にバンドルを使用しましたが、それは不平を言っていませんでしたが、おそらく奇妙な理由でした。

+1

に一覧表示何に注意を払うべきであることを意味

gem.files = 'git ls-files'.split($/) 

注:あなたはそれをgitのを呼び出して、ファイルのリストを生成するためにバッククォートを使用しています.gemspecでこれを見ることができます私のシステム上の宝石は 'gem build project_name.gemspec;を使っています。 gem unpack project_name-x.y.z.gem'は、最近追加されたファイルをインクルードして展開し、通常は追加の作業やチェックは必要ありません。あなたのワークフローの説明から、予想される動作との違いを引き起こす可能性があることはわかりません。 –

+0

これはおそらく私の頭をレンガの壁に打ちつける10時間を節約しました。私はスタックオーバーフローが大好きです。 – reedstonefood

答えて

22

あなたのためにgemリポジトリを起動してgemコードをバージョン管理してください。あなたは

git add lib/gem_name/missing_file.rb 

バンドラー生成された宝石は、内部的に宝石のソースファイルの「会員」を追跡するためにgitを使うのgitでファイルが追加されていることを確認してください。これはまた、あなたは、私が確認している.gitignore

+0

ファイルがgitにありませんでした。しかし、私は今それを追加し、宝石を再構築しました。同じ結果。また、ファイルを表示するgit ls-filesとすべてのテストファイルを実行しました。これらのどれも宝石に含まれていません。 – Stefan

+1

rakeタスクを使ってgemをインストールしていますか? 'rake install'は管理された場所を使って' gem build'と 'gem install'を行います。 'gem build name.gemspec'はインストールを行いません。単に' name-x.y.z 'を作成します。現在のフォルダに「gem」と入力してください –

+0

ワークフローで質問が更新されました。私はrake installを一度も使用していませんが、インストール前に元の宝石にファイルが存在しないことを確信しています – Stefan

関連する問題