1

私は Sinatra を次のようにサブクラス化するアプリケーションを構築しています:

require 'rubygems'
require 'sinatra/base'
require 'sinatra/assetpack'

class App < Sinatra::Base
  ...

  run!
end

どうすればirbにアクセスできますか? この方法でsinatraを実行するとオプションが解析されません。プログラムでirbシェルを開くにはどうすればよいですか?

4

3 に答える 3

8

以下のように入力するだけです(シェルプロンプトで):

irb -r ./my_app.rb
于 2014-09-19T09:59:35.437 に答える
7

アプリ内から 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
于 2012-10-31T19:43:01.617 に答える
0

Sinatrabingergemを使用して、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ます。

ソース:https ://github.com/thinkphp/sinatra-bing

デモ:http ://sinatra-bing.herokuapp.com/

于 2013-03-16T13:18:37.697 に答える