私は Sinatra を次のようにサブクラス化するアプリケーションを構築しています:
require 'rubygems'
require 'sinatra/base'
require 'sinatra/assetpack'
class App < Sinatra::Base
...
run!
end
どうすればirbにアクセスできますか? この方法でsinatraを実行するとオプションが解析されません。プログラムでirbシェルを開くにはどうすればよいですか?
以下のように入力するだけです(シェルプロンプトで):
irb -r ./my_app.rb
アプリ内から IRB セッションを開くか (?)、IRB を使用して Sinatra プロジェクトをデバッグするか、少し混乱しています。
Rack ベースのアプリ (Sinatra など) のデバッグには、Rack アプリケーション用の「 Rails のスクリプト/コンソールのようなもの」であるracksh gemを使用するのが好きです。IRB に対する主な利点は、racksh がアプリケーション環境全体をシェルにロードし、デバッグを簡単にすることです。
Racksh のGithub ページから: 「目的は、開発者がアプリケーションをイントロスペクトしたり、初期設定を行ったりできるようにすることです。たとえば、DataMapper.auto_migrate! を実行したり、/users/666 にリクエストを送信して応答の詳細を確認したりできます。これは主に目的です。コンソールのようなコンポーネントを持たないアプリ (つまり、Sinatra でビルドされたアプリ) では、すべてのフレームワークがインタラクティブな Rack スタックとリクエスト イントロスペクションの恩恵を受けることができます。"
ただし、racksh ではアプリにconfig.ru
ファイルが必要なため、アプリを書き直す必要があります。
# in config.ru
require 'rubygems'
require 'sinatra/base'
require 'sinatra/assetpack'
require 'app.rb'
# in app.rb
class App < Sinatra::Base
...
run!
end
次に、アプリ フォルダー (config.ru が存在する場所) で:
$ gem install racksh # or add gem 'racksh' to your Gemfile and run bundle
$ racksh
Sinatraとbinger
gemを使用して、MicrosoftのBingのこの単純な検索インターフェイスを確認してください。そこからの指示に従うと、理解が深まります。
まず、Gemfileを作成し、以下を追加します。
source "https://rubygems.org"
gem 'sinatra'
gem 'binger'
次に、bundle
生成されるコマンドを実行しGemfile.lock
ます。次に、config.ru
ファイルを作成し、例を使用して追加します。
require 'rubygems'
require 'bundler'
Bundler.require
require './app.rb'
run MyApp
あなたapp.rb
はこのように見えるかもしれません:
class MyApp < Sinatra::Base
get '/' do
@title = "Index"
erb:index
end
end
。という名前のフォルダが必要views
です。作成index.erb
して追加:
< % = @title % >
最後に、を実行しrackup
ます。