簡體   English   中英

在模塊化Sinatra應用程序中訪問irb

[英]Accessing the irb in a modular Sinatra application

我正在構建一個將Sinatra子類化的應用程序,如下所示:

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

class App < Sinatra::Base
  ...

  run!
end

如何訪問irb? 以這種方式執行sinatra時,不會解析選項,如何以編程方式打開irb shell?

您是要在應用程序中打開IRB會話(?),還是要使用IRB調試Sinatra項目,我有些困惑。

對於調試基於Rack的應用程序(例如Sinatra),我喜歡使用racksh gem ,它對於Rack應用程序來說就像Rails中的腳本/控制台 ”。 與IRB相比,它的主要優勢在於,sharksh將整個應用程序環境加載到shell中,從而使調試變得輕而易舉。

在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

只需鍵入以下內容(在shell提示符下):

irb -r ./my_app.rb

使用Sinatrabinger gem,在此簡單的搜索界面中查看Microsoft的Bing。 如果按照那里的說明進行操作,將會更好地理解。

首先,創建一個Gemfile並添加:

source "https://rubygems.org"

gem 'sinatra'
gem 'binger'

然后運行將生成Gemfile.lockbundle命令。 然后創建一個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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM