我正在使用Ruby和Sinatra开发应用程序。我用enable:sessions为了使用rack提供的session变量。我怎样才能让所有的sessioncookie都是HTTPOnly?默认是这样的吗?我找不到关于此的任何文档。 最佳答案 代替启用:session:useRack::Session::Cookie,{:httponly=>true}我建议使用encrypted_cookiegem相反,它更安全。例如,我可能会为一个项目准备以下内容:#app/main.rbmoduleExampleclassApp'usr',:p
我一直在使用Rack::Flash一段时间来在我的Sinatra应用程序中显示关于响应的flash通知。自从我升级到Sinatra1.3.2后,应用程序崩溃了,每当我向服务器发出请求时都会记录以下内容:!!Unexpectederrorwhileprocessingrequest:undefinedmethod`简化的代码如下所示:require'sinatra'require'rack-flash'enable:sessionsuseRack::Flashget"/"do"HelloWorld"end知道为什么会这样吗? 最佳答案
我正在开发一个事件处理程序来向远程api报告异常(类似于newrelic代理),如果不在environment.rb文件中执行,我找不到将我的中间件添加到Rack的方法。我不想在environment.rb文件中执行此操作,因为我计划将它变成一个gem,并且我想尽量减少安装过程。这是我想添加到我的应用程序中的简单中间件:#/lib/response_timer.rbclassResponseTimerdefinitialize(app)@app=appenddefcall(env)#dosomethinghere@app.call(env)endend我能找到包含它的唯一方法是将其添加
我正在做一些中间件,在它到达Rails之前更改authenticity_token参数。我可以看到env.inspect给出了rack.request.form_vars和rack.request.form_hash。两者都包含真实性token。Rails使用哪一个?为什么Rack两者都提供? 最佳答案 让我们看看源码吧!这两个变量都来自使用Rack::Request辅助类。它为请求参数提供了一个很好的接口(interface)。Rack应用程序不需要使用它,但Rails确实会使用它。变量供Rack::Request内部使用。rac
如何使用unicorn运行基于Rack的应用程序(而非Rails)?假设我有一个名为server.ru的“helloworld”响应简单Rack应用程序,以及位于同一目录的名为unicorn.conf的配置文件,我应该如何运行它?例如,在Thin中,我会做类似的事情:bundleexecrackupserver.ru-sthin-Eproduction-p4001我如何做同样的事情才能在Unicorn下运行? 最佳答案 Unicorn不会对Rails3+应用程序给予任何特殊处理,因此Rails3+应用程序和非RailsRack应用程
构建器.rb:defappRack::Builder.newdorunApp.newend.to_append如何在给定的端口上运行? 最佳答案 尝试:Rack::Handler.default.run(app,:Port=>3000)虽然更典型的做法是在config.ru文件中运行您的应用程序并将端口指定为rackup的命令行选项,例如:rackup-p3000。 关于ruby-如何为Rack应用程序设置端口?,我们在StackOverflow上找到一个类似的问题:
Sinatra/Rack世界中是否有任何类似于Rails配置加载方案的东西,它根据Rails.env加载config\enviroments\*.rb文件之一我知道我可以很容易地开发一个,我只是想知道是否已经有了一些东西。 最佳答案 如果您遵循Rails惯例,将每个环境的文件放在config/environments/environment_name.rb中,您可以将类似的内容放在您的Sinatra应用程序中,或者对于Rack放在您的config.ru文件中:Dir.glob(File.dirname(__FILE__)+"/con
我在使用Sinatra构建的EC2上托管了一个非常简单的应用程序,在nginx后面使用thin服务。问题是在Chrome中,session变量在Sinatra中“丢失”了。它不会发生在Firefox中。这是使用Rack::Session::Cookie。这类似于此问题:SinatranotpersistingsessionwithredirectonChrome如果您能提供有关如何在Chrome中解决此问题的任何见解,我们将不胜感激。 最佳答案 确保您正在设置以下内容:configure:developmentdoset(:sess
我注意到某些请求,特别是来自UptimeRobot的测试页面正常运行时间最近开始在我的Rails3.1.x应用程序上生成以下RackLint错误:21:47:05web.1|StartedHEAD"/"for74.86.158.106at2012-03-2221:47:05-040021:47:05web.1|ProcessingbyHomeController#indexas*/*...21:47:05web.1|/Users/username/.rvm/gems/ruby-1.9.3-p125@project/gems/activesupport-3.1.4/lib/active_
我正在学习Sinatra框架并开发登录系统。我遇到了两种使用cookie的方法。一个简单的Sinatra内置方式:enable:sessionsset:session_secret,'random-key'此方法在登录时生成以下cookie内容(使用session.inspect获取输出):{"session_id"=>"6be0b9a31831604ba51114d265ba952482e0b2da6ced6c54e15ebe7f212858ca","tracking"=>{"HTTP_USER_AGENT"=>"b8c1e8f89eeaea0b825bed0d811f0c7678e