heroku上にsinatraで作ったアプリ上げるときのハマりどころ
herokuもsinatraも初心者な自分がハマった所と、対処法書いときます。
基本は、ユーザ登録をして
https://devcenter.heroku.com/articles/ruby
の通りに進めていけば良いのですが
HTMLのテンプレート使いたい
風の噂で、hamlがサクサク書けて良いと聞いたので、hamlを選択
Gemfileにhamlを追加
gem 'haml'
bundle installでhamlをインストール
bundle install
同じようなコードで毎回テンプレート名指定するのがめんどくさい
パスと同じテンプレートファイル名ならば、これでいけた。
get '/:path' do path = params[:path] haml path.intern end
hamlでちょっと凝ったことしたい
HTMLエスケープも自動でしたい
エスケープ設定も追加で
set:haml, :format => :html5, :escape_html => true
共通部分はレイアウトとしてまとめたい
layout.hamlという名前でレイアウトファイルを作成すれば
自動的にレイアウトとして認識してくれます。
ビューファイルは、= yieldで呼べる。
以下、body宣言までのレイアウトが、ビューを呼ぶ例。
!!! %html{:lang => "ja"} %head %meta{:charset => "UTF-8"} %body / ここでビューを呼ぶ / =ではなく、!=にしないとエスケープされるので注意 != yield
呼ばれるビューファイル側のインデントは、インデント無しの状態から始める。
bodyの子要素だからと、インデント2つ分から始めたら怒られた。
要素の属性値がたくさんあって、1行が長くなるのがいや
rubyのハッシュに詰めてから渡すと多少改善される
:ruby opts = { :src => "https://www.google.com/calendar/embed?src=XXX :style => "border: 0", :width => "800", :height => "600", :frameborder => "0", :scrolling => "no" } %iframe{opts}
herokuでアプリの名前変えたらコミットできなくなっちゃった
# 現在の設定確認 % git remote -v heroku git@heroku.com:strong-day-3354.git (fetch) heroku git@heroku.com:strong-day-3354.git (push) # 変更 # アプリ名をAAAに変えた場合 % git remote set-url heroku git@heroku.com:AAA.git # 反映確認 % git remote -v heroku git@heroku.com:AAA.git (fetch) heroku git@heroku.com:AAA.git (push)