開発
Sinatra@CGI + Redcarpet
murakami
こんにちは。徐々に暖かくなりつつある最近ですがいかがお過ごしでしょう?
会津はもう少しで桜が咲くかなーという感じです。
さて今日ですがタイトルにあるようにSinatraをCGIモードで動かしてRedcarpetを使おうという内容です。
別にSinatraならサーバーモードで動かせばいいじゃん・・・という声もありそうですが、よくありがちなCGI実行までが許可されているレンタルサーバーでSinatra使うというのがメインの目的です。
まず各々の紹介です
- Sinatra (http://www.sinatrarb.com) : Railsを超軽量化したイメージ
- Redcarpet (https://github.com/vmg/redcarpet) : Markdownエンジン。Githubにも採用されているとか
実装
まずは環境構築。以下の流れでぱぱっと
- Rubyビルド(必要なら)
- gemのパスの変更
- gem install sinatra redcarpet
以上です。簡単ですね、rubygems流石です。
で次に中身を作っていきます。
(対象ディレクトリ内で)
cd ~/www/ touch .htaccess touch app.rb touch index.cgi chmod 705 index.cgi mkdir public mkdir public/css mkdir public/js mkdir public/img mkdir views
とよくありがちな流れで作成します。
であとはindex.cgiにapp.rbを起動するコードを書いて、app.rbにsinatra用のコードを書けば終わりです。
# index.cgi #!/home/USERNAME/local/bin/ruby $LOAD_PATH.unshift '/home/USERNAME/local/lib' ENV['GEM_HOME'] = '/home/USERNAME/local/lib/ruby/gems' # ----- load './app.rb' # ----- set :run, false # サーバーが起動しないように set :environment, :cgi # ----- Rack::Handler::CGI.run Sinatra::Application
# app.rb #!/home/USERNAME/local/bin/ruby $LOAD_PATH.unshift '/home/USERNAME/local/lib' ENV['GEM_HOME'] = '/home/USERNAME/local/lib/ruby/gems' # ----- require 'sinatra' # ----- get '/' do "HELLO!" end get '/test/:param' do "#{params[:param]}" end
とこんな感じになります。あとはMarkdownの表示ですので、たとえば
get '/test/markdown' do <%= Redcarpet::Markdown.new(Redcarpet::Render::HTML).render("# Hello world and Markdown!") %> end
とかするとMarkdownが解釈されて、http://<対象>/test/markdown にブラウザからアクセスした時に
Hello world and Markdown!
と表示してくれるはずです。
興味がありましたらお試しください。
—–
担当 : 村上(Markdown便利ですね)