問題
・sinatraで書いたファイルをchmodコマンドを実行した後に./コマンドで実行することができない。
#/Users/ユーザ名/Work1
chmod +x main.rb #実行属性をファイルに付与
./main.rb #カレントディレクトリ直下のコマンドを実行
./main.rb: line 2: require: command not found
./main.rb: line 4: get: command not found
./main.rb: line 5: Hello World: command not found
./main.rb: line 6: end: command not found
結論
・./コマンドの代わりにrubyコマンドで実行すればいけた。#/Users/ユーザ名/Work1
ruby main.rb
[2022-11-30 23:18:57] INFO WEBrick 1.6.0
[2022-11-30 23:18:57] INFO ruby 2.7.1 (2020-03-31) [x86_64-darwin22]
== Sinatra (v3.0.3) has taken the stage on 4567 for development with backup from WEBrick
[2022-11-30 23:18:57] INFO WEBrick::HTTPServer#start: pid=16096 port=4567
結論に至るまで
予想した原因
まず、この問題に直面したときに考えたのが、以下の二つです。
①sinatraをインストールできていない。
②sinatraはインストールできているけど、カレントディレクトリからライブラリにアクセスするためのパス設定ができていない。
- ①sinatraをインストールできていない。
- ②sinatraはインストールできているけど、カレントディレクトリからライブラリにアクセスするためのパス設定ができていない。
というわけで、これらについて調べてみました。
計画
やることを整理すると、、、
・ローカルのsinatraパスを確認する。
・確認できたら、そのパスにカレントディレクトリからアクセスできるようにする。
- ・ローカルのsinatraパスを確認する。
- ・確認できたら、そのパスにカレントディレクトリからアクセスできるようにする。
です。早速実行してみました。
計画実行
まずはgemがどこに保存されているのかがわからなかったので、とりあえず確認してみます。#/Users/ユーザ名/Work1
gem environment gemdir
/Users/ユーザ名/.anyenv/envs/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0
次に、sinatraのgemがどこに保存されているのか確認します。
#/Users/ユーザ名/Work1
gem which sinatra
Users/ユーザ名/.anyenv/envs/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/sinatra-3.0.4/lib/sinatra.rb
ついでに、rubyがどのパスから呼び出されているかも確認しておきます。
#/Users/ユーザ名/Work1
which ruby
/Users/ユーザ名/.anyenv/envs/rbenv/shims/ruby
振り返り
ここまで、計画を実行してみて、
・ローカルにsinatraはインストールされている。
・ruby,sinatraのパスはそれぞれ問題なさそう。
- ・ローカルにsinatraはインストールされている。
- ・ruby,sinatraのパスはそれぞれ問題なさそう。
つまり、最初に予想した原因は問題ではないということが分かった。
そうなってくると、あとはコマンド自体に問題があるんじゃないかと考えた。
原因の再予想
・chmodコマンドか./コマンドのどちらかに原因がある。
計画
・他のディレクトリでchmodコマンドと./コマンドを試してみる。
計画実行
早速ディレクトリを変えてコマンドを打ってみる。#/Users/ユーザ名
./ruby.rb
-bash: ./ruby.rb: Permission denied
chmod +x ruby.rb
./ruby.rb
./ruby.rb: line 1: puts: command not found
振り返り
chmodコマンドを打ち忘れたときにPermission deniedが出た。
再度chmodコマンドを打ったらPermission deniedが消えたので、このコマンドはちゃんと実行されている。
つまり、問題は./コマンドにある。
そこで次の記事を見てみた。
rbenvを使ってSinatraの実行環境を整えるまで
この記事で、sinatraで書かれたファイルをrubyコマンドで実行していたので試してみたら、、、
#/Users/ユーザ名/Work1
ruby main.rb
[2022-11-30 23:18:57] INFO WEBrick 1.6.0
[2022-11-30 23:18:57] INFO ruby 2.7.1 (2020-03-31) [x86_64-darwin22]
== Sinatra (v3.0.3) has taken the stage on 4567 for development with backup from WEBrick
[2022-11-30 23:18:57] INFO WEBrick::HTTPServer#start: pid=16096 port=4567
というわけで今回はコマンドを変えればいいだけでしたw
参考にしたサイト
#執筆時間55分