Tag: 西纳特拉

有没有办法将html冲到Sinatra的电线上

我有一个Sinatra应用程序,具有长时间运行的过程(Web刮刀)。 我希望应用程序在爬虫运行时而不是在结束时刷新爬虫的进度结果。 我已经考虑过请求并使用ajax做一些奇特的事情,但这是一个非常基本的单页面应用程序,它真的需要在浏览器发生时输出日志。 有什么建议?

你用什么Sinatra?

我对Sinatra(ruby框架)感到困惑。 它是一个轻量级的Rails替代品还是你可以让它们并排运行? 你可以做一个Web应用程序(如在Rails中)吗? 比如一个twitter克隆?

Sinatra子目录视图

我希望能够从./views的子目录(例如./views/admin)获取Sinatra视图。 我知道你可以像这样设置视图: set :views, Proc.new { File.join(root, “templates”) } 但是,我怎么能只为文件的一部分设置这个?

如何使用sinatra会话

enable :sessions get ‘/foo’ do session[‘m’] = ‘Hello World!’ redirect ‘/bar’ end get ‘/bar’ do session[‘m’] # => ‘Hello World!’ end 它似乎不起作用。

覆盖Sinatra默认的NotFound错误页面

有没有办法覆盖sinatra默认的NotFound错误页面(“Sinatra不知道这个小曲”)? 我希望sinatra只显示一个普通的字符串作为“找不到方法”,当它找不到正确的路由时,但是当我从路由中引发404错误时,我希望它显示传入的错误消息。 像这样实现not_found块: not_found do ‘Method not found.’ end 工作,但它不是一个有效的选项,因为我希望能够从这样的路由抛出我自己的NotFound错误消息: get ‘/’ do begin # some processing that can raise an exception if resource not found rescue => e error 404, e.message.to_json end end 但正如预期的那样not_found块会覆盖我的错误消息。

基于组件的模块化Sinatra应用程序的体系结构

我正在研究一个包含大约10个不同function组件的Sinatra应用程序。 我们希望能够将这些组件混合并匹配到应用程序的单独实例中,完全由config.yaml文件配置,类似于: components: – route: ‘/chunky’ component_type: FoodLister component_settings: food_type: bacon max_items: 400 – route: ‘places/paris’ component_type: Mapper component_settings: latitude: 48.85387273165654 longitude: 2.340087890625 – route: ‘places/losangeles’ component_type: Mapper component_settings: latitude: 34.043556504127466 longitude: -118.23486328125 如您所见,组件可以多次实例化,每个组件都有自己的上下文设置。 每个组件至少包含一个路由,其中​​“route”属性来自用于基础的配置文件。 组织和实例化模块代码的最佳方法是什么?

如何加快Ruby / Rake任务的速度

rake –tasks需要大约18秒才能运行。 这只是加载所有任务所需的时间,因此我定义的任何任务至少需要花费这么多时间来运行: $time rake –tasks rake db:clean # Cleaning up database rake passenger:restart # Restart Application rake spec # Run specs real 0m18.816s user 0m7.306s sys 0m5.665s 我的Rakefile: $: < :spec 知道为什么rake需要多次? 谢谢

启动Sinatra时出错:“尝试创建没有块的Proc对象”

我对ruby / rails非常新,并且有一个我无法弄清楚的问题,但觉得它应该相对简单。 命令: ruby app.rb 错误: /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1144:in `define_method’: tried to create Proc object without a block (ArgumentError) from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1144:in `compile!’ from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1129:in `route’ from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1111:in `get’ from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1474:in `send’ from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1474:in `get’ from app.rb:4 app.rb内容: require ‘rubygems’ require ‘sinatra’ get ‘/’ do “Hello World” end 我更新了所有gem,仍然得到同样的错误。 如果需要,我也可以发布gem列表。

Sinatra服务器运行后执行代码

我在Sinatra::Base附带了一个Sinatra应用程序,我想在服务器启动后运行一些代码,我该怎么做呢? 这是一个例子: require ‘sinatra’ require ‘launchy’ class MyServer < Sinatra::Base get '/' do "My server" end # This is the bit I'm not sure how to do after_server_running do # Launches a browser with this webapp in it upon server start Launchy.open("http://#{settings.host}:#{settings.port}/") end end 有任何想法吗?

Sinatra帮助假冒请求

摘要 在Sinatra Web应用程序中,如何向应用程序发出虚拟请求并将响应正文作为文本返回? 例如,这些路线…… get(‘/foo’){ “foo” } get(‘/bar’){ “#{spoof_request ‘/foo’} – bar” } …当使用Web浏览器请求“/ bar”时,应该产生响应“foo – bar”。 动机 我的应用程序有一个表示错误条目的页面,其中包含有关该错误条目的大量详细信息:错误的版本是什么,它有多重要,哪些标记与之关联,错误分配给谁,等等。 用户可以交互地编辑该页面上的各个数据。 使用我的AJAXFetch jQuery插件,JavaScript使用AJAX交换页面的只读部分(例如,将此bug分配给的人的名称),使用HTML部分表单来编辑该部分。 用户提交表单,AJAX对该字段的静态版本发出新请求。 为了成为DRY ,我想要创建页面的Haml视图使用与创建单个静态片段时AJAX完全相同的请求。 例如: #notifications.section %h2 Email me if someone… .section-body= spoof_request “/partial/notifications/#{@bug.id}” 非工作准则 定义spoof_request的以下助手在Sinatra 1.1.2下工作: PATH_VARS = %w[ REQUEST_PATH PATH_INFO REQUEST_URI ] def spoof_request( uri, headers=nil ) new_env = env.dup PATH_VARS.each{ |k| […]