Tag: sinatra

当尝试使用现有的git repo上传Sinatra应用程序时,“Heroku推送被拒绝,没有检测到Cedar支持的应用程序”

我有一个现有的git repo用于我的个人网站,我将其移植到Sinatra(主要用于模板,它是一个静态站点)。 我不想丢失/重置这个git存储库。 当我尝试推送到Heroku时,我收到以下错误。 我有一个config.ru文件,一个Gemfile和一个Gemfile.lock,以及Sinatra的其他一些东西。 运行rackup工作,运行bundle exec rackup工作,我没有收到Heroku关于缺少依赖项的任何警告。 我错过了什么吗? 我可以发布我的网站的目录结构,如果它会有所帮助(尽管它是近源的)。 ~/Repos/website ➜ gp heroku master Counting objects: 2836, done. Compressing objects: 100% (2669/2669), done. Writing objects: 100% (2836/2836), 3.48 MiB | 252 KiB/s, done. Total 2836 (delta 481), reused 2117 (delta 155) —–> Heroku receiving push ! Heroku push rejected, no Cedar-supported app detected To […]

对于不同类型的Ruby应用程序,最常用的unit testing框架是什么?

用于不同Web框架的相同unit testing框架 – Rails,Merb,Sinatra,Ramaze和桌面框架 – Shoes? 什么是最广泛使用的unit testing框架,可以与所有各种Web和桌面框架一起使用?

创建一个使用Sinatra的路由只接受某种内容类型

我正在尝试创建一个使用Sinatra的路由,它只接受带有Content-type: application/json POST Content-type: application/json但没有成功。 我的方法如下: post ‘/dogs’, :provides => :json do # returns here a json response end 使用curl进行测试,我已经看到:provides => :json配置路由以使用Content-Type: application/json进行响应。 这是正确的,因为我还希望用POST请求的JSON消息进行响应,但我真的需要这条路由只响应具有Content-Type: application/json POST请求,而不是响应其他人(例如Content-Type: application/xml )。 在Sinatra中是否有任何方法限制路由只接受具有特定Content-Type请求?

在公共基线路线上建立路线?

我有一个共同的基本路径; 说: get /base我需要执行基本身份validation并在该路径下为所有子调用工作。 说: get /base/foo和get /base/bar 。 查看http://www.sinatrarb.com/intro.html#Helpers建议我应该可以使用帮助程序来完成此操作。 我正在查看pass助手并在文档中触发新路由时使用call 。 但是,我读到的另一个建议是使用正则表达式IE %r{/base/?:(path)?}或其他一些动态路由。 那么怎么样: def ‘/base’ # do some funky basic auth stuff here # to work with all request to this common # base path? pass end def %r{/base/?(path)?} do |path| case path when ‘foo’ # do something. when ‘bar’ # do something […]

Heroku和Web抓取

我有一个nokigiri web scraper,它发布到我试图发布到heroku的数据库。 我有一个sinatra应用程序前端,我想从数据库中提取。 我是Heroku和Web开发的新手,并不知道处理这类事情的最佳方法。 我是否必须将上传到Web数据库的Web scraper脚本放在sinatra路径下(例如mywebsite.com/scraper)并且只是让它变得模糊不清以至于没有人访问它? 最后,我想让sinatra部分成为从数据库中提取的restapi。 感谢所有输入

Sinatra – 从请求终止服务器

我希望能够从请求中终止Sinatra应用程序,例如使用以下路由: post ‘/terminate’ do Thread.current.kill end 像这样实现它有点突然。 我宁愿完成请求,返回HTTP OK消息,然后Sinatra优雅地关闭。 这样做有钩子吗? 编辑: 我的应用程序是一个轻量级的模拟服务器,用于接收webhook通知。 我将在同一台机器(不同的端口)上使用这样的多个服务器,因此需要避免任何全局启动/停止方法。 我的要求是由每个服务器必须在其自己的Ruby实例中运行的事实驱动的,因此除了通过REST接口之外,我的测试和服务器之间没有通信。 我正在使用默认的thin服务器来运行Sinatra。 到目前为止,我的代码只是Sinatra :: Base的一个子类,开始使用run! 从代码中。 这很简单,我可以制作独立的脚本来实例化每个服务器,我只需要有一种方法来阻止它们。

Sinatra使用Facebook身份validation的会话

我对ruby和Sinatra很新,我有一个基本问题: 我正在尝试构建的应用程序将使用Facebook作为在应用程序中validation用户身份的唯一方法。 我想存储一个本地用户表,其中只包含facebook uid以及一些用户首选项。 我看了几个允许我对facebook API进行身份validation的gem,但是我不确定在我建立用户之后如何在我的应用程序中控制会话是有效的。 我一直在使用考拉gem与facebook交谈,我也看到过sinatra-sessiongem用于运行会话方面的事情。 一旦用户使用他们的Facebook帐户登录,有人能指出我如何管理会话的正确方向吗?

使用Datamapper和Sinatra进行简单搜索

我对Ruby和后端开发很新。 话虽这么说,我正在尝试创建一个简单的搜索表单。 我使用Sinatra作为框架,使用Datamapper作为我的ORM。 做这个的最好方式是什么? 下面是我的架构我希望搜索操作同时搜索磁贴和类别。 require ‘sinatra’ require ‘datamapper’ DataMapper.setup(:default, “sqlite3://#{Dir.pwd}/cal.db”) class Event include DataMapper::Resource property :id, Serial property :title, String property :text, Text property :contact_name, String property :contact_email, String property :location, String property :event_start_time, String property :event_end_time, String property :category, String property :created_at, DateTime property :approved, Boolean, :default => false end DataMapper.auto_upgrade! post ‘/search’ […]

使用Sinatra和jQuery而无需在POST上重定向

我正在尝试使用jQuery向我的Sinatra应用程序提交表单,但是当通过AJAX进行POST时,Sinatra应用程序正在显示一个空白页面。 我希望它保持在同一页面,并更新我在javascript中指定的内容。 这是我的代码,剥离了: post ‘/register’ do register( params ) end get ‘/register’ do haml :register end 这是我在haml文件中的javascript: :javascript $(function() { $(“button#submit”).click(function(){ $.ajax({ type: “POST”, url: “/register”, data: $(‘form.register’).serialize(), success: function(){ $(“#message”).html(“Successfully registered”) }, error: function(){ $(“#message”).html(“Not Successful”) } }); }); });

如何使用.html.erb作为Sinatra视图的文件扩展名?

如果我有以下Sinatra代码: get ‘/hi’ do erb :hello end 如果我有一个名为views/hello.erb的文件,这很有views/hello.erb 。 但是,如果我有一个名为views/hello.html.erb的文件,Sinatra找不到该文件并给我一个错误。 我怎么告诉Sinatra我希望它能找到.html.erb作为有效的.erb扩展名?