20210526 今日のプログラミング修行

 

gem nokogiriのせいでrailsサーバーが立ち上がらない問題に再チャレンジ。

これを乗り切ったら再びチュートリアルに戻れるのだが、なかなか。

 

https://qiita.com/java74717470/items/40678916e5f386e3866e

gemfileに下記の行を追加。bundleインストールで変わるのか

 

gem 'nokogiri', '~>1.11.6'

 

bundle installでエラーが出たので、エラーの言う通りにbundle updateしたらバージョンが1.11.6に5からアップされたが、サーバーは立ち上がらず。

謎。

 

 

 

違う記事を見て、Rubyのインストールし直しを試みる。

https://qiita.com/a_ishidaaa/items/8cc14453289dba1413dd

 

BUILD FAILED (macOS 11.2.3 using ruby-build 20210510)

 

検索すると、同じような問題に出会う人が多いみたいで、対処方法が載っていた。

RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC

これを頭につけてbrent installすると。

今やっているがどうだろう。

ちなみに、上のコマンドの意味を知りたくてググったけど0件表示。なんでだ。

検索方法を変えると出てきた。

ビルドの処理を制御するための、特別な環境変数

らしい。

 

他の人はできているみたいだが、僕は同じエラーが出た。

なんだよ…

 

ちなみに僕のMacmacOS 11.2.3。

 

2.6.7が入れれないので、2.7.3ならどうかと試してみる。

成功しても、チュートリアル系は確か2.6系なのでまた別のところで問題が起きる可能性が高そうだからもしうまくいったとしても嬉しくはないんだけれどな。

 

 

f:id:gnusei:20210526232434p:plain

error: implicit declaration of function 'ffi_prep_closure' on M1 macOS Big Sur · Issue #869 · ffi/ffi · GitHub

 

なんかこんなことを言っている人がいるな。M1 Macをウキウキして買ったが、こういう問題もあるのと知ったのはなかなか面白い。

 

RVMという単語が出てきたので、rbenvとの違いを検索してみると下記のような説明があった。

f:id:gnusei:20210526232816p:plain

RVMを使う選択肢は今の所考えなくて良さそう。

 

やっぱりビルド失敗

ログを見にいったが、量が膨大。

なんかこんなことを言っているのがあったけど、関係あるのか

ld: warning: directory not found for option '-L/Users/kazumayasui/.rbenv/versions/2.7.3/lib'

 

なんかログの場所をよくみると、2.6.7のインストール失敗の時のログで、

コマンドラインを見直すと2.7.3はインストール成功していた。

 

素人考えだけど、2.6.7をインストールしようとしているのに2.7.3のフォルダが必要になっていたからうまくいかなくて、2.7.3ではできたんじゃないかな。

よし、とりあえず2.7.3を使ってrails newしてみるか。

 

参考にしてるqiitaの記事にrbenv rehashというコマンドがあったので調べると、とてもわかりやすい記事。ふわっと理解できた。

www.mogulla3.tech

 

Rails newしてサーバーを立ち上げたが、また同じエラー…

見ていると、なんかRuby2.6.0のフォルダを見にいっているみたいなんだけど、rbenvで2.7.3をインストールしているはずだから、おかしいよねなんか。

 

railsがどこを見に行くのか、仕組みをもう少し調べたら解決しなくも無さそう。な気もする。

 

gem install railsをしたら、rails newができるようになったが、rails serverはやっぱり同じようにだめ。

 

railsアプリ内の.ruby-versionの中身を、2.7.3に書き換えてみた。

これでBundle installをやってみる

できたので、Rails serverをすると、こんなエラーが

 

Warning: the running version of Bundler (2.2.17) is older than the version that created the lockfile (2.2.18). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.2.18`.

Your Ruby version is 2.6.3, but your Gemfile specified 2.7.3

 

なんでインストールされていないversion2.6.3が指定されているのだ。一回再起動でもしてみようか。

rails newについてもう一度調べる。

 

とりあえず再起動して、which gemをしたら、rbenvのものを使っていることがわかった。

もう一度rails new して、rails serverやったらいけた!ついに!!

Rubyrails、gem周りのややこしさがよくわかった。