LoginSignup
0
0

More than 1 year has passed since last update.

./main.rbで実行できなかったけど、ruby main.rbで余裕で実行できた件

Posted at

問題

・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パスを確認する。
    ・確認できたら、そのパスにカレントディレクトリからアクセスできるようにする。

です。早速実行してみました。

計画実行

まずは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のパスはそれぞれ問題なさそう。

つまり、最初に予想した原因は問題ではないということが分かった。

そうなってくると、あとはコマンド自体に問題があるんじゃないかと考えた。

原因の再予想

・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

参考にしたサイト

rbenvを使ってSinatraの実行環境を整えるまで

#執筆時間55分

0
0
1

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
0
0