Tag: sinatra

RACK在哪里登录?

我正在通过RACK运行一个sinatra应用程序。 该活动记录到哪个文件? 另外我如何设置日志文件路径?

Ruby w / Sinatra:与rails相同的.js.erb是什么?

.js.erb很不错,因为您可以使用它们来替换页面的某些部分,而不必离开当前页面,从而为网站/应用程序提供更清晰和不受欢迎的感觉。 有没有办法在sinatra中使用它们? 还是等价的?

无法使用rackup和jRuby启动简单的Sinatra应用程序(没有来自Web服务器的响应)

我有一个Sinatra“hello world”应用程序,我试图使用jRuby运行。 它在我运行应用程序时有效,但在我运行机架时则无效。 谁能告诉我这里发生了什么? 这是应用程序,在’app.rb’文件中: require ‘rubygems’ require ‘bundler/setup’ require ‘sinatra’ configure do set :bind, ‘0.0.0.0’ end get ‘/’ do ‘Boo!’ end 我可以使用bundle exec ruby app.rb运行它,它工作正常: jonea@centos7andy[~/andy/sinatra_sand_jruby]%: bundle exec ruby app.rb [2015-01-12 10:36:06] INFO WEBrick 1.3.1 [2015-01-12 10:36:06] INFO ruby 1.9.3 (2014-12-09) [java] == Sinatra/1.4.5 has taken the stage on 4567 for development with backup […]

如何为独立的Sinatra应用启用SSL?

我想在Sinatra写一个快速的服务器应用程序。 它必须是自包含的(即不使用apache / nginx / passenger),但也必须支持SSL。 有没有简单的方法为Sinatra启用SSL支持(例如使用WEBRick)?

使用Rack :: Session :: Cookie删除当前会话

我觉得我在这里遗漏了一些明显的东西,我希望我发布这个时候有人会因为我失踪的谷歌搜索链接而感到羞耻:-) enable :sessions get ‘/logout’ do # What goes here to kill the session? end

在Heroku的Sinatra应用程序中,会话不是跨越Dynos共享的

这是有道理的。 但对于这个问题,有哪些首选的工作方法呢?

是在请求之间共享的Sinatra路由中定义的全局变量吗?

说我有: get ‘/’ do $random = Random.rand() response.body = $random end 如果我每秒有数千个请求进入/,$ random会在上下文之外共享和“泄漏”,还是会像get块的’local’变量一样? 我想如果它是在get ‘/’ do的上下文之外定义它确实会被共享,但我想知道是否有一个我不知道的ruby中的机制。

在Ruby / Sinatra中解码Facebook签名的请求

由于Facebook贬低了新的FBML,我正在寻找一种新的方式来创建一个“揭示”标签(一个页面选项卡,向粉丝显示一个版本,向非粉丝显示另一个版本)。 Facebook已将数据添加到signed_request: 当用户在左侧菜单中选择您的应用程序时,该应用程序将接收带有一个附加参数页面的JMS数组的signed_request参数,该数组包含您的Tab所在的Facebook页面的“id”,布尔值(’ likes’)表示用户是否喜欢Page,还有一个布尔值(’admin’)表示用户是否是Page的’admin’以及用户信息数组。 我能够读取signed_request,但是我需要使用base64url解码来处理它以获得正确的JSON。 另外,我在研究中发现JSON格式不正确,因此需要在解码之前对其进行修改。 这是当前的代码(我现在只是在index.erb中打印已签名的请求): helpers do def base64_url_decode str encoded_str = str.gsub(‘-‘,’+’).gsub(‘_’,’/’) encoded_str += ‘=’ while !(encoded_str.size % 4).zero? Base64.decode64(encoded_str) end def decode_data str encoded_sig, payload = str.split(‘.’) data = ActiveSupport::JSON.decode base64_url_decode(payload) end end get ‘/’ do signed_request = params[:signed_request] @signed_request = decode_data(signed_request) erb :index end 我正在努力保持应用程序尽可能轻,避免使用完整的Facebook库,因为这不是一个完整的应用程序(只是一个选项卡),不需要用户的任何其他权限。 我也欢迎任何关于我的风扇探测方法的建议。

自动记录DataMapper查询

我正在使用DataMapper在Sinatra上创建一个简单的应用程序。 我希望看到为我的各种链式查找器创建DM的查询等。 我试过了: DataMapper::Logger.new(STDOUT, :debug) 在我的configure do … end块中,在应用程序启动时加载的environment.rb文件中。 我也尝试过: DataMapper::Logger.new(‘log/my-app.log’, :debug) 不会通过浏览器或需要我的应用程序的irb会话从应用程序中获取日志语句。 我确实看到了应用程序启动消息。 我正在使用rackup config.ru在本地运行应用程序。 我错过了什么?

调用视图文件时如何传递参数?

我使用Sinatra和Haml编写了一个webform,用于调用Ruby脚本。 一切似乎都很好,除了一件事:我需要将参数传递给Sinatra / Ruby脚本中的Haml视图文件。 这是我的代码的一部分: #!/usr/bin/env ruby require ‘rubygems’ require ‘sinatra’ require ‘haml’ get ‘/’ do haml :index end post ‘/’ do name = params[:name] vlan = params[:vlan] tmp = nil tmp = %x[./wco-hosts.rb -a -n #{name} -v #{vlan}] if tmp.include?(“Error”) haml :fail else haml :success end end 如果脚本遇到一个arror,它将返回一个包含单词“Error”的字符串。 如果发生这种情况,我正在调用一个Haml文件,该文件将向用户显示错误页面。 如果脚本没有遇到错误,它将返回一个成功页面。 我想在成功/失败页面中包含用户添加的新VM的名称。 我的问题是我不知道如何在我的两个Haml文件中传递它。 我搜索了一个解决方案,但没有找到任何东西。