我正在构建一个像Sinatra一样子类的应用程序:
require 'rubygems'
require 'sinatra/base'
require 'sinatra/assetpack'
class App < Sinatra::Base
...
run!
end
Run Code Online (Sandbox Code Playgroud)
我怎样才能访问irb?以这种方式执行sinatra时不解析选项,如何以编程方式打开irb shell?
我是否想要在您的应用程序中打开IRB会话(?)或使用IRB来调试您的Sinatra项目,我有点困惑?
为了调试基于Rack的应用程序(例如Sinatra),我喜欢使用racksh gem,它对于Rack应用程序来说就像 " Rails中的脚本/控制台 ".它优于IRB的主要优点是Racksh将整个应用程序环境加载到shell中,使调试变得轻而易举.
来自racksh的Github页面:"它的目的是允许开发人员内省他的应用程序和/或进行一些初始设置.例如,您可以运行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
Run Code Online (Sandbox Code Playgroud)
然后在你的app文件夹(config.ru所在的位置):
$ gem install racksh # or add gem 'racksh' to your Gemfile and run bundle
$ racksh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4946 次 |
| 最近记录: |