序章
Sinatraは、Rubyで記述されたシンプルで軽量なWebフレームワークです。 この記事は、基本的なRubyを理解していて、システムまたはクラウドサーバーにRubyとRubyGemsがインストールされていることを前提としています。 Rubyバージョンマネージャー(RVM)を使用することをお勧めします。
Railsではありません。 それは何ですか?
Sinatraは、どちらもWebフレームワークであるという点でRubyonRailsに似ています。 Railsとはかなり異なり、はるかに軽量(オーバーヘッドが少ない)であり、Webアプリをよりきめ細かく制御できます。 さらに、組み込みのデータベース機能やページレンダリングはありません。これらはすべて、手動で行われます。
では、なぜシナトラなのか?
これは速い。 簡単だ。 効率的です。 ただし、それに伴い、作業が増え、エラーの余地が増えます。
Sinatraは、小規模なWebアプリケーション、またはWebサイトのリストにあるような'膨張を必要としないアプリケーションに最適です。 テキストを上下逆さまにするだけのような、単一目的のアプリがたくさんあります。 Sinatraを使用して単純なJekyllフロントエンドを作成することもできます。
RubyとRubyGemsのインストール
RubyとRubyGemsをインストールする最良の方法は、Rubyバージョンマネージャー(RVM)を使用することです。 RVMを使用すると、複数のRubieをインストールして、独自のgemセット(gemsets)を使用したり、Rubyごとに異なるgemsetをインストールしたりすることができます。 最新のRVMおよびRuby2.0.0を入手するには、次のコマンドを実行します。
\curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0
Rubyバージョンには任意のバージョン番号を付けることができます。 これにより、コマンドを実行している1人のユーザーのRVMがインストールされます。 システム全体にインストールするには、bashの前にsudoを追加します。
\curl -L https://get.rvm.io | sudo bash -s stable --ruby=2.0.0
バイナリRubyがシステムまたはクラウドサーバーで利用できる場合(ほとんどの場合)、ダウンロードしてインストールされます。 そうでない場合は、ソースからRubyをビルドします。 これには時間がかかる場合があります。
インストールの最後に、ログアウトしてから再度ログインします。 次に、コマンドを実行するように求められます
source ~/.rvm/scripts/rvm
— this loads RVM into your current terminal. If all goes well, you will not have to do that again for any other terminal you open. However, if you are continually prompted to run that command, add it to your startup file, like
.bashrc
また
.zshrc
宝石のインストール
他のgemをインストールするのと同じように、Sinatraは次のようにインストールされます。
gem install sinatra
以上です。 Sinatraをインストールしました。
はじめに:Hello World
最初のWebアプリケーションは、シンプルで理解しやすいものでなければなりません。 アプリケーションはRubyクラスにラップされています。 これが2つのファイルの単純なWebアプリケーションです。
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/' do "Hello, world!" end end
# config.ru require './app' run HelloWorldApp
コンテンツを2つのファイルapp.rbとconfig.ruに書き込んだ後(Emacsまたはお好みのテキストエディターを使用)、同じフォルダーから実行してアプリケーションを実行できます(たとえば、 、 / home / user / code / my_sinatra_app ):
rackup
これにより、アプリケーションにサービスを提供するWEBrickが起動します。 WEBRickがサービスを提供しているIPとポートを教えてくれることに気付くでしょう。 メモを取る。 http:// IP:portからアプリケーションにアクセスできます。
HelloWorldアプリケーションを理解する
Sinatraでは、各 get (または post 、 put など)ブロックは、各ルートと、アプリが特定のHTTP要求にどのように応答するかを定義します。 この例では、ユーザーがアプリケーションのルートディレクトリ、つまり/を要求したときに何が起こるかを定義しました。
もっと複雑なことを試してみましょう。
パラメータを取るようにHelloWorldAppを設定しましょう!
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/' do "Hello, world!" end get '/:name' do "Hello, #{params[:name]}!" end end
URLパラメータは:param のように指定され、Rubyコードのparamsハッシュに格納されます。
このコードは、2つのルートを指定します。1つはネイキッド / 用で、もう1つは /:name用です。 ただし、このルーティングを、nameパラメーターの存在をチェックする1つのルートに単純化することもできます。
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/?:name?' do "Hello, #{params[:name] ? params[:name] : 'world'}!" end end
これはもっと複雑です。 「オプション」のパラメーターは、疑問符で囲むことで表すことができます。 次に、三項演算子を使用して、 params [:name] の存在を確認します。では、ユーザーに挨拶を指定させたい場合はどうすればよいでしょうか。 見てみましょう... それをどのように構成しますか?
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/:greeting/?:name?' do "#{params[:greeting]}, #{params[:name] ? params[:name] : 'world'}!" end end
これで、 http:// yoursever:port / Aloha / Timothy に移動するだけで、ティモシー氏は非常に特別な気分になります。
さらに詳しい情報
驚異的なSinatra'独自のGettingStartedガイドをお勧めします。 それは非常に役立ちます。