Help us understand the problem. What is going on with this article?

Railsで開発をしていてGem作ったりして、プロダクトに取り込もうとした時の話

More than 5 years have passed since last update.

状況

Railsで開発をしていて、Gemを使おうとしたが、期待通りの動きではなかったのでforkして開発した。
そしていざプロダクトに取り込もうとして「あれ?あれ?」となったお話。

Gem

fork元
https://github.com/wtnabe/jshint4r
fork先
https://github.com/amanattou44/jshint4r

現状と対策

Gemの開発方法がよく分からなかったのでプロダクトにfork元を取り込んだ状態で開発しながら進めていた。
そしていざ、完成して、Gemfileに取り込もうとした時にまず、 rubygems.org に登録する必要があると思って、ずっと奮闘していた。
結論から言うと rubygems.org にforkした物は取り込めない。
こういうエラーが出る。

Pushing gem to https://rubygems.org...
You do not have permission to push to this gem.
rake aborted!

じゃあどうするか、と言えばこうする。

Gemfile
gem 'jshint4r', github: 'amanattou44/jshint4r'

こうする事でGitHubを指定する事が出来る。

そして次に bundle install するとエラーが出て困った。

jshint4r at /プロダクト/vendor/bundle/ruby/2.1.0/bundler/gems/jshint4r-ee196b6af
cd6 did not have a valid gemspec.                                                                     
This prevents bundler from installing bins or native extensions, but that may not affect its functionality.                                                                                                 
The validation message from Rubygems was:                                                             
  ["vendor/jshint/CHANGELOG", "vendor/jshint/Makefile", "vendor/jshint/README.md", "vendor/jshint/jshint.js"] are not files                                                                                 

???となったが、よくよく考えるとこのfork元はgit submoduleを使っていた為、それらが無いよ、との事だった。

スクリーンショット 2015-01-28 14.23.40.png

こういうの。
最初、submoduleという単語を忘れていた為に結構どハマりした。
単語を思い出したら即解決したし、bundlerスゲーってなった。

これを解決する為にはどうすればいいかは PR#1935 に書いてあるが、

Gemfile
gem 'jshint4r', github: 'amanattou44/jshint4r', submodules: true

とすれば、 git submodule update --init してくれる。
以上が、開発してからプロダクトの vendor/bundle に取り込むまでに苦労しました。

所感

やっぱりRails、便利!
あと、Gemに関しては今後も改良して行きたいし、erb, haml, jadeなどにも対応して行きたい。
inlineのjavascript:配下をただぶっこ抜いてるだけなので、ここら辺もリファクタしたいと思う。
jshintも最新の使うようにしたい。

追記

あ、ちなみにHTMLにcompileしてから jshint --extract=auto target.html って普通の人はすればいいと思うので、これを使うメリットは無いです!
参考URL

orange-lion
かかってくんな、オラぁ!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away