ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

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>


mystatic/css/style.css

.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


macOSWindowsの場合は

http://localhost:4567



レガッタはおもしろい、と赤色の文字で表示されていれば成功。