Sinatraでよく使うツール その2
Sinatraのデフォルト設定では、publicという名のディレクトリ内にCSSなどの静的ファイルを配置するきまりになっている。
今回はこのディレクトリ名を変更する方法について試す。
目次
静的ファイル用のディレクトリ名を変更するコード
#publicをmystaticに変更する set :public_folder, File.dirname(__FILE__) + '/mystatic'
ディレクトリ名を変更するメリット
変更しておくとCSSファイルなどが外部からのぞかれにくくなる。
Sinatra Top > README > #Static Files
http://sinatrarb.com/intro.html
Note that the public directory name is not included in the URL. A file ./public/css/style.css is made available as http://example.com/css/style.css.
注意書きにあるようにpublicのままだとCSSファイルが表示されてしまうことがある。
名称を変更することでこれを防ぐ。
つかい方
今回の環境はVirtualBox Vagrant Ubuntu。
Sinatraはbundlerの--path
オプションでインストール。
コードをrequire
のつぎあたりに記入する。
main.rb
require 'sinatra' #-o [ipアドレス]オプションを不要にする set :environment, :production #publicをmystaticに変更する set :public_folder, File.dirname(__FILE__) + '/mystatic' get '/' do erb :index end
views/index.erb
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <!-- リンクのパスはmystatic(public)の下層から記入 --> <link rel="stylesheet" href="/css/style.css" type="text/css" media="all"> </head> <body> <h1 class="red">レガッタはおもしろい</h1> </body> </html>
.red { color: red; }
ディレクトリ/ファイル構造
変更前
- main.rb - views - index.erb - public - css - style.css
変更後
- main.rb - views - index.erb - mystatic - css - style.css
実行
Sinatraファイルの起動
bundle exec ruby main.rb
set :environment, :production
を使わない場合は
bundle exec ruby main.rb -o 192.168.33.**
192.168.33.** にはVagrantfileで設定したipアドレスが入る。
ブラウザにURLを入力して表示
http://192.168.33.**:4567
http://localhost:4567
レガッタはおもしろい、と赤色の文字で表示されていれば成功。