Tag: sinatra

乘客:内部服务器错误

我安装了Apache,Passenger和Sinatra并部署了一个应用程序。 尝试访问时出错: An error occurred while starting up the preloader: it did not write a startup response in time. Application root /var/www/html/test Environment (value of RAILS_ENV, RACK_ENV, WSGI_ENV and PASSENGER_ENV) production Ruby interpreter command /usr/local/bin/ruby User and groups Unknown Environment variables Unknown Ulimits Unknown 我该如何解决? 编辑 在应用程序日志中,我发现了以下错误: !> Ready !> socket: unix:/tmp/passenger.1.0.14019/generation-0/backends/preloader.14049 !> gem清单: bigdecimal […]

使用sinatra流API的异步请求

我使用async_sinatra gem来实现异步路由,但我在某个地方发现了一个post,说可以使用Sinatra的流API来代替async_sinatra 。 可以使用流媒体实现以下相同的function吗? require ’em-hiredis’ require ‘sinatra/async’ class App < Sinatra::Base register Sinatra::Async def redis @redis ||= EM::Hiredis.connect end aget '/' do redis.blpop('abcdef', 15). callback {|x| body "x=#{x}"}. errback {|e| body "e=#{e}"} end run! if app_file == $0 end

如何使用Ruby和ERB(而不是Rails)的视图和布局?

如何使用Ruby和ERB(而不是Rails)的视图和布局? 今天我正在使用此代码来呈现我的视图: def render(template_path, context = self) template = File.read(template_path) ERB.new(template).result(context.get_binding) end 这非常有效,但是如何实现相同的function,但是在布局中渲染模板? 我想调用render_with_layout(template_path,context = self),以便它具有默认布局。

在Rack :: Test中使用Cookies

我正在尝试使用Rack :: Test为我的Sinatra应用程序编写RSpec测试。 我无法理解如何使用cookies。 例如,如果我的应用程序设置了cookie(而不是通过:session),我该如何检查该cookie是否正确设置? 另外,如何使用该cookie发送请求?

获得sinatra的绝对(基础)url

现在,我做了 get ‘/’ do set :base_url, “#{request.env[‘rack.url_scheme’]}://#{request.env[‘HTTP_HOST’]}” # … haml :index end 能够在HAML index.haml中使用options.base_url。 但我相信有更好的,干的,这样做的方式。 然而,我看不到,也找不到它。 (我是Sinatra的新手:)) 不知何故,在get之外,我没有request.env可用,或者看起来如此。 因此将它放入包含中并不起作用。 你如何得到你的基本url?

在Sinatra(Ruby)中,我应该如何创建在应用程序生命周期中仅赋值一次的全局变量?

在Sinatra中,我无法创建在应用程序生命周期中仅赋值一次的全局变量。 我错过了什么吗? 我的简化代码如下所示: require ‘rubygems’ if RUBY_VERSION < "1.9" require 'sinatra/base' class WebApp < Sinatra::Base @a = 1 before do @b = 2 end get '/' do puts @a, @b "#{@a}, #{@b}" end end WebApp.run! 这导致了 nil 2 在终端中,2在浏览器中。 如果我尝试在initialize方法中放置@a = 1 ,我在WebApp.run!收到错误WebApp.run! 线。 我觉得我错过了一些东西,因为如果我不能拥有全局变量,那么如何在应用程序实例化期间加载大数据呢? 每次有来自客户端的请求时,似乎都会调用。

在ruby / ActiveRecord中生成类似Instagram或Youtube的不可语句字符串ID

在创建给定的ActiveRecord模型对象的实例时,我需要生成一个短的(6-8个字符)唯一字符串,用作URL中的标识符,采用Instagram的照片URL样式(如http://instagram.com/ p / P541i4ErdL / ,我刚刚加入404)或Youtube的videourl(如http://www.youtube.com/watch?v=oHg5SJYRHA0 )。 这样做的最佳方法是什么? 最简单的方法就是重复创建一个随机字符串 ,直到它是唯一的? 有没有办法散列/随机播放整数id,以便用户不能通过更改一个字符来破解URL(就像我上面的404’d Instagram链接那样)并最终获得新记录?

ruby 1.9 + sinatra不兼容的字符编码:ASCII-8BIT和UTF-8

我正在尝试将sinatra应用程序迁移到ruby 1.9 我正在使用sinatra 1.0,机架1.2.0和erb模板 当我启动sinatra它工作,但当我从浏览器请求网页时,我收到此错误: Encoding::CompatibilityError at / incompatible character encodings: ASCII-8BIT and UTF-8 所有.rb文件都有这个标题: #!/usr/bin/env ruby # encoding: utf-8 我认为问题出现在erb文件中,即使它表明它是UTF-8编码的 [user@localhost views]$ file home.erb home.erb: UTF-8 Unicode text 以前有人有这个问题吗? sinatra与ruby 1.9不完全兼容?

使用Sinatra上传文件

我正在尝试使用Sinatra上传文件。 我在这里有代码,但是我收到错误“方法file_hash不存在”(请参阅​​/lib/mvc/helpers/helpers.rb)。 这里发生了什么? 我缺少一些依赖吗?

在Sinatra中使用Rack :: CommonLogger

我有一个与Sinatra一起编写的小型Web服务器。 我希望能够将消息记录到日志文件中。 我通过http://www.sinatrarb.com/api/index.html和www.sinatrarb.com/intro.html阅读,我看到Rack有一个名为Rack :: CommonLogger的东西,但我找不到如何访问和用于记录消息的任何示例。 我的应用程序很简单所以我把它写成顶级DSL,但我可以切换到从SinatraBaseinheritance它,如果这是所需要的一部分。