序章

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

—これにより、RVMが現在の端末にロードされます。 すべてがうまくいけば、開いている他のターミナルに対してそれを再度行う必要はありません。 ただし、そのコマンドを実行するように継続的に求められる場合は、次のように、コマンドをスタートアップファイルに追加します。

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