我正在构建一个应用程序,该应用程序将Sinatra子类化如下:

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

class App < Sinatra::Base
  ...

  run!
end

如何访问irb以这种方式执行sinatra时不解析选项,如何以编程方式打开irb shell?

最佳答案

我有点困惑你是否想在你的应用程序中打开一个IRB会话或者使用IRB调试您的Sinatra项目?
为了调试基于机架的应用程序(比如Sinatra),我喜欢使用racksh gem,它“就像Rails中的脚本/控制台”来调试机架应用程序与IRB相比,racksh的主要优势是将整个应用程序环境加载到shell中,使调试变得轻而易举。
从racksh的Github page:“它的目的是允许开发人员反思他的应用程序和/或进行一些初始设置例如,您可以运行DataMapper.auto_migrate或者向/users/666发出请求并检查响应详细信息。它主要针对那些没有类似控制台的组件的应用程序(即使用Sinatra构建的应用程序),但所有框架都可以从交互式机架堆栈和请求内省中受益。”
但是,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

关于ruby - 在模块化Sinatra应用程序中访问irb,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12890641/

10-09 08:08
查看更多