5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-01-28

状況

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

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?