序章

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.rbconfig.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ガイドをお勧めします。 それは非常に役立ちます。