開発
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便利ですね)
2024/09/13
2024/05/17
2024/05/10
2024/01/05
2023/08/18
2023/07/14
2023/05/12