プロジェクト

全般

プロフィール

バグ #889

mikutter.rb のshebangが /usr/bin/ruby になっており、他の場所にrubyがあると落ちる

waita Tachibana1年以上前に追加. 約1年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:

説明

mikutter.rbのshebang( http://dev.mikutter.hachune.net/projects/mikutter/repository/revisions/master/entry/mikutter.rb#L1 )がハードコードになっている事により、Rubyをビルドしてインストールした時などに起動に失敗するようです。

`/usr/bin/env ruby` に変更すればenvコマンドからどこかにインストールされているRubyを探索してくれそうですが、こうしていない理由などはあったりしますか?

(ちなみにこれはdocker_mikutter( https://github.com/Na0ki/docker_mikutter )を触っていた時に気づいたものです)

関係しているリビジョン

リビジョン 00302264 (差分)
toshi_a 初音約1年前に追加

mikutter.rbのshebangを変更する refs #889

履歴

#1 toshi_a 初音1年以上前に更新

俺もこうなっている理由が分からなかったので追加された当時のコミットを見てみました(995c7507c1ac8e337565305420b3ca4f2e2a7a46)。コミットコメントがないのでわかりません。この粒度でコミットされてたら残っててもどっちみち役に立たなさそう。

たしか /usr/bin/env は、その場所にenvがあるとは限らないのでよくない、という話をきいたことがあったのでちょっと調べてみたところ、Rubyではこう書く場合もあるようです。
http://docs.ruby-lang.org/ja/latest/doc/spec=2frubycmd.html

#!/bin/sh
exec ruby -x "$0" "$@" 
#!ruby
p ARGV
puts "Hello, World!" 

これはこれでrubyにPATHが通っていることを前提にしているのであんまり良くないように見える。何年か前にこの書き方を見てからこれが最強なんだと思ってたけど調べれば調べるほどわからなくなってきた。どうせ変更するのであれば現代における一番いい方法を使いたいが、答えのない自転車置き場の議論という気もする。

#2 waita Tachibana1年以上前に更新

env コマンド使っても結局PATHを通っている事が前提になるし、Rubyドキュメントに記載されている起動方法でも問題無い気がしますが、これだと mikutter.sh になってしまうんですかね?

#3 toshi_a 初音1年以上前に更新

これだと mikutter.sh になってしまうんですかね?

起動ファイルのmikutter.rbをリネームする必要があるのかということですね。それは必要なくて、 ./mikutter.rb という名前でもshebangによってshell scriptとして実行されるだけです。
rubyインタプリタが、渡されたファイルに #!ruby と書かれた行があれば、その行以降のみをパースするという性質を利用しているとのことです。

env
  • envが存在しない環境がある
  • envがどこにあるかわからない
sh
  • shが存在しない環境があるのでは?(ぐぐっても言及が見当たらない)

ので、私の提案した方法のほうが良いような気はしています。

#4 waita Tachibana約1年前に更新

rubyインタプリタが、渡されたファイルに #!ruby と書かれた行があれば、その行以降のみをパースするという性質を利用しているとのことです。

なるほど理解しました。

shが存在しない環境があるのでは?(ぐぐっても言及が見当たらない)

私も /bin/sh にない環境はあまり聞かないので #889-1 の手法で問題ないように思えます。

強いて言うならばshの$PATHにrubyへのPATHが通ってないようなことが挙げられますが、これはまだ(環境変数だし)回避しやすい物だと思われます。

#5 toshi_a 初音約1年前に更新

仮に #889-1 で実装してみて、どういう影響があるか調べてみます。

#6 toshi_a 初音約1年前に更新

  • 担当者waita Tachibana にセット

変更してみました。特に問題はないように思えますが。

3.4から分岐していますが、前と全く同じ動きをするわけではないし、前の実装が間違っていたわけでもないので、3.5からの変更としようかなぁと思っています。

#7 waita Tachibana約1年前に更新

私の方でも試してみましたが特に問題は無さそうです。

3.5からの変更としようかなぁと思っています。

はい、それで問題無いかと!

#8 toshi_a 初音約1年前に更新

  • ステータス新規 から 終了 に変更
  • 対象バージョン3.4 から 3.5 に変更

develop にマージしました

他の形式にエクスポート: Atom PDF