nokogiri gem と戦った
こんにちはJD.です。Ruby on rails を使ってwebサービスを開発したいのでまず勉強してます。
今やってる事
この本を使って勉強を始めたところです。
たった1日で基本が身に付く! Ruby on Rails 超入門
- 作者: WINGSプロジェクト竹馬力,山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2018/03/09
- メディア: 大型本
- この商品を含むブログを見る
”1日で”に惹かれました。(おそらく僕の実力では1週間以上かかる)
困ってしまった事
rails new ”プロジェクト名”でrailsのプロジェクトを作るらしいのですが
なんかエラーが出たんですよ。
ちょっとよく覚えてないけど、「nokogiriのパーミッションがなんとか〜」みたいなエラー。
この時点で僕が把握していた事は
- nokogiriはどうやらrailsのgemというものらしい
- gemとはライブラリとその仕組みのことらしい(ちなみにライブラリがそもそもわからん)
- nokogiriに関するエラーはそこそこみんなも経験しているらしい
解決する
こういう手順で解決してみました。(エラー解決の王道の手順とか知りたい)
ターミナル「nokogiriというgemがパーミッションのエラーを起こしてるよ」
僕 エラーメッセージコピペして検索、nokogiriに関するサイトはいっぱいあったけど良く分からん。
bundler updateをしたら治るかもねと書いてあったので、やろうとするけど、bundlerも良く分からんし、どこでそのコマンド打つねんって感じでした。これくらい分かるやろってのが分からんから初学者には難しいです。
とりあえず、rails new ”プロジェクト名”したディレクトリに移動して(移動くらいわかるやろ)
$ bundler update
すると
Errno::EACCES: Permission denied @ dir_s_mkdir -
/Users/username/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/nokogiri-1.8.3
An error occurred while installing nokogiri (1.8.3), and Bundler
cannot continue.
Make sure that `gem install nokogiri -v '1.8.3'` succeeds before bundling.
と訳のわからないエラーが出ました。
僕 「ははあ、パーミッションがdeniedなんだー、なるほどー??」ということでエラーメッセージをコピペして検索。
$ gem install nokogiri -v '1.8.3'
をしてnokogiriのインストールを試みるも、できない。
調べた結果
nokogiriに関する権限が、自分じゃなくてrootになっているのがいけないという事がわかった。
こんな感じ
$ chown -R username /Users/username/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-16/2.5.0-static
で権限を変えられるようです。
クソ馬鹿な僕は$ chown -R username が自分のユーザーネームを入力するという事に気付かず、数分混乱。だってわからんやん、普通。
しかし、それでもできない。あっ、sudoつけたらいけるんちゃう?
説明しよう、sudoとはなんかすごい力で強制的に命令が実行できちゃうコマンドのような感じのやつである。
$ sudo chown -R username /Users/username/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-16/2.5.0-static
権限が自分に移った!
$ gem install nokogiri -v '1.8.3'
Building native extensions. This could take a while...
Successfully installed nokogiri-1.8.3
Parsing documentation for nokogiri-1.8.3
Installing ri documentation for nokogiri-1.8.3
Done installing documentation for nokogiri after 10 seconds
1 gem installed
まとめ
できた!!