Ruby on Railsの質問です。「実践Ruby on Rails」という本を参考に簡単なプロジェクトを作ろうとしています。

rails *****
でプロジェクトを作成し、ディレクトリに移動して
ruby ./script/server
でWEBrickを起動し、ローカルの3000ポートに接続して動作確認というところでうまく行かなくなりました。ここで思ったのですが、WEBrick もWebサーバという事ならApacheのように公開ディレクトリが存在し、ログインユーザの作業ディレクトリからシンボリック・リンクをはるなどの作業が必要な気がするのですが、そうした記述が見つかりませんでした。そのあたりについて詳しく記しているページを教えてください。


よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/06/19 21:00:23
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:moro No.1

回答回数23ベストアンサー獲得回数10

ポイント35pt

http://www.ruby-lang.org/ja/man/?cmd=view;name=webrick

URLはWEBrickのマニュアルです。

WEBRickでも上記の作業が必要なのはその通りなのですが、Railsでscript/serverで起動する場合はその辺の設定がなされたWEBrickが起動するはずです。

つまり、Railsアプリを起動するだけであれば、特別な設定は不要なはずです。起動しないのは他の原因ではないでしょうか。

エラーが出ているということであればエラーの出力などがあれば、もう少し具体的にお答えできると思います。

id:mine-D

ありがとうございます。マニュアルざっと読んでみますね。症状は404になります。

2007/06/19 20:05:50

その他の回答1件)

id:moro No.1

回答回数23ベストアンサー獲得回数10ここでベストアンサー

ポイント35pt

http://www.ruby-lang.org/ja/man/?cmd=view;name=webrick

URLはWEBrickのマニュアルです。

WEBRickでも上記の作業が必要なのはその通りなのですが、Railsでscript/serverで起動する場合はその辺の設定がなされたWEBrickが起動するはずです。

つまり、Railsアプリを起動するだけであれば、特別な設定は不要なはずです。起動しないのは他の原因ではないでしょうか。

エラーが出ているということであればエラーの出力などがあれば、もう少し具体的にお答えできると思います。

id:mine-D

ありがとうございます。マニュアルざっと読んでみますね。症状は404になります。

2007/06/19 20:05:50
id:moro No.2

回答回数23ベストアンサー獲得回数10

ポイント35pt

WEBrickで起動したRailsアプリケーション(というかRails用の設定で起動したWEBrick)はポートをまるっと占有します。

そのため、上記の例ではあとから起動しようとするfugaユーザはそもそもWEBrickを起動できません。

(script/server -p 3001 とかすれば3001で起動できます)

また、ドキュメントルートですが、Railsプロジェクとのpublic/ディレクトリをドキュメントルートとしてマウントします。

そのため、

http://localhost:3000/

#{RAILS_ROOT}/public を見に行きます。

もしかすると http://localhost:3000/hoge

を見ようとしていらっしゃるのかもしれませんが、この場合はRails的にはHogeControllerへのアクセスと解釈し、(そのコントローラがなければ)404を返します。

じゃあ、一台のサーバ(一つのポート)で複数のRailsアプリを起動できないのか、というと、できることはできます。

個々では具体的な方法は省略しますが、relative_url_rootなどをキーワードに検索するといろいろ出てくると思いますよ。

id:mine-D

ありがとうございます!まるごと占有するんですね。理解しました。とりあえず、もう一度本を読み直し、public/ディレクトリを調べてみます。

2007/06/19 20:30:52
  • id:mine-D
    例えば「hoge」というユーザのホームディレクトリにプロジェクトを展開したとして、WEBrickを起動するとします。同じサーバで「fuga」というユーザが同じようにホームディレクトリに同名プロジェクトを展開し、同様にWEBrickを起動して「localhost:3000/****」でアクセスするとどうなるのでしょうか。この辺が概念的にまだ理解できていないと思うのです。
  • id:mine-D
    訂正です。症状は「ページ読み込みエラー」になります。「サーバへの接続を確立できませんでした」と表示されます。
  • id:mine-D
    一度プロジェクトのディレクトリを削除→railsコマンドでプロジェクト作成→OK→プロジェクトのディレクトリに移動してruby ./script/serverでWEBrick起動→OKとやり直してみたのですが、やはり3000ポートにつなぐと接続できないようです。…うーん、正直お手上げという感じです。どこかアホみたいな間違いをしているのでしょうが…。
  • id:mine-D
    すみません。Linuxのファイアウォールがポート3000でのアクセスをブロックしていたみたいです。過去にも同じ理由で引っかかった事があるのに、学習できていませんでした。ありがとうございました。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません