标签: sinatra

哪个库可以为Sinatra提供最简单的OAuth 2.0身份验证

我将围绕一个服务实现一个简单的REST API包装器,并希望将Ruby与Sinatra一起用于此任务.
想法是让用户使用双腿OAuth(2.0)验证/签署请求.

我应该尝试使用像warden和addtional oauth 2.0 addon(例如warden-oauth2)这样的身份验证框架,还是应该使用像rack-oauth2-server这样的基于机架的解决方案.基于机架的方法似乎依赖于MongoDB,这是好的,但我宁愿最小化依赖性.

干杯,
马克

ruby oauth sinatra

14
推荐指数
1
解决办法
5261
查看次数

设置第三方服务器以与Game Center交互

我正在考虑为我的iOS游戏添加一个功能,允许玩家创建自己的游戏关卡,与其他玩家分享,评分等等.有一个用户创建关卡的公共存储库,可按创建日期排序,评级,难度或其他标准.

这种功能需要第三方服务器.我在想我会使用Sinatra创建一个RESTful API并在Heroku上运行它.我的问题是:验证对此API的请求的最佳方法是什么?我宁愿不要求玩家创建用户名和密码.我想使用Game Center的ID系统.

有什么建议?我从来没有做任何服务器端的东西,所以任何帮助表示赞赏!

澄清

是的,我知道Apple没有提供自己的系统.但它确实让开发人员可以访问唯一的游戏中心标识符(developer.apple.com/library/mac/#documentation/ ...),我希望我能以某种方式使用它来滚动我自己的身份验证系统,而无需用户通过Facebook登录/微博/等.如果那是可能的.

authentication sinatra ios game-center

14
推荐指数
1
解决办法
6364
查看次数

Sinatra具有可选的查询参数

我想创建一个带有可选查询参数的Sinatra API路由.我可以按如下方式添加查询参数

%R {^/MySQL的/数据/(?)/ START_TIME =(\ W*)/?}

但是对应上述路由的路由就像"/ mysql/data /:name/start_time =:start_time"

我需要将查询参数作为可选参数并以URL格式声明.

例如:

/ MySQL的/数据/:命名START_TIME =:START_TIME&END_TIME =:END_TIME

在Sinatra有没有办法做到这一点?

ruby regex routes sinatra

14
推荐指数
1
解决办法
1万
查看次数

Sinatra中的静态页面路由(Ruby)

你可以通过将它们放入public/(默认情况下)来为Sinatra提供静态文件- 我现在有一个index.html在那里,但是如何将根点指向该文件而不必将其解析为模板?

要清楚,我可以/index.html成功访问,并且我想路由/到相同的静态文件,但没有重定向.知道怎么做吗?

ruby routing sinatra

13
推荐指数
2
解决办法
7290
查看次数

使用Cookies与Rack :: Test

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

另外,如何使用该cookie发送请求?

ruby cookies rack rspec sinatra

13
推荐指数
1
解决办法
6366
查看次数

有条件地设置CSS类

如何转换此ERB代码:

<div <%= 'class="highlight"' if job.done %>>
Run Code Online (Sandbox Code Playgroud)

进入Haml代码?

ruby haml erb sinatra

13
推荐指数
2
解决办法
8602
查看次数

Backbone.js创建方法不向sinatra发送参数

我是骨干的新手,并试图在Sinatra中设置它,但我似乎无法让简单的创建工作.

我已经设置了我的模型/集合:

var TEAM_ID = window.location.pathname.split('/')[1]; // From url
$(function () {
  var TeamMember = Backbone.Model.extend({
    defaults: {
      name : ""
    }
  });

  var TeamMembers = Backbone.Collection.extend({
    model: TeamMember,
    url: "/" + TEAM_ID + "/team-members.json"
  });

  var teamMembers = new TeamMembers;

  var TeamMemberView = Backbone.View.extend({
    events: { 
      "click #new-team-member-form .submit-button" : "handleNewTeamMember" 
    },
    handleNewTeamMember: function(data) {
      var inputField = $('input[name=new_team_member_name]');
      console.log("Pre create");

      // This doesn't get sent to the server!!
      var teamMember = teamMembers.create({name: inputField.val());

      console.log("Post create");

      return false; // …
Run Code Online (Sandbox Code Playgroud)

sinatra backbone.js

13
推荐指数
1
解决办法
1629
查看次数

Sinatra CSRF真品令牌

我正在使用Sinatra框架在ruby中构建一个简单的应用程序.它主要是"获取" - 大多数请求将用于列出数据.但是,应用程序中有几个关键屏幕将收集用户输入.我想确保应用程序尽可能安全,并且目前正试图找到如何实现您在Rails表单中获得的真实性令牌?

我必须去的地方:嗯,我知道我需要csrf的令牌,但我不确定我是否需要自己生成它们,或者Sinatra是否可以为我做这些 - 我已经查看了文档并且他们说Sinatra正在使用机架保护,但是,我找不到它的任何示例代码,似乎无法弄清楚如何实现它 - 任何帮助升值 - 谢谢!

ruby csrf sinatra

13
推荐指数
1
解决办法
7328
查看次数

访问Ruby哈希变量

我对ruby和sinatra很新,但基本上我有这条路线:

put '/user_list/:user_id' do
    puts request.params["model"]
end
Run Code Online (Sandbox Code Playgroud)

它返回以下内容

{"password":"36494092d7d5682666ac04f62d624141","username":"nicholas","user_id":106,"firstname":"Nicholas","email":"nicholas@macpractice.com","is_admin":0,"lastname":"Rose","privileges":""}
Run Code Online (Sandbox Code Playgroud)

我现在很难访问每个人的价值观.它似乎不是哈希格式,所以我不能真正做到

request.params["model"][:password]
Run Code Online (Sandbox Code Playgroud)

它只返回零..

我只需要知道如何访问这些变量,或者如何配置我的请求参数以获得良好的格式来访问变量.

ruby hash sinatra

13
推荐指数
2
解决办法
3万
查看次数

在生产服务器上使用DataMapper和Sinatra设置数据库的正确方法是什么?

DataMapper文档中,我认为至少需要调用四个函数才能进行数据库设置:

DataMapper.setup(:default, 'sqlite:///path/to/project.db')
DataMapper.finalize
DataMapper.auto_migrate!
DataMapper.auto_upgrade!
Run Code Online (Sandbox Code Playgroud)

在许多DataMapper + Sinatra教程中,我了解到auto_migrate!并且auto_upgrade!不应该在每次在生产服务器上加载应用程序时调用它.但同时许多例子在sinatra应用程序的主ruby文件中调用这些函数,比如说app.rb,没有额外的检查.而一些例子根本不打电话finalize.到目前为止,我很困惑,我不知道在生产服务器上做什么.

以下是简单app.rb的例子,我有一些问题:

  1. 何时何地应该finalize被召集?
  2. 在第一次部署应用程序时db,生产服务器上没有文件,如何自动创建它?或者我必须project.db手动创建文件?
  3. 由于它auto_upgrade!被包装在:development块中,因此不会在生产服务器上调用它.当我在其中添加或删除列时,我应该如何升级数据库?
require 'sinatra'
require 'data_mapper'

configure do
  DataMapper.setup :default, "sqlite3://#{Dir.pwd}/project.db"
end

class Book
  include DataMapper::Resource
  property :id, Serial
  property :title, Text

  belongs_to :author
end

class Author
  include DataMapper::Resource
  property :id, Serial
  property :name, Text

  has n, :books
end

configure :development do
  DataMapper.auto_upgrade!
end

get '/:id' do …
Run Code Online (Sandbox Code Playgroud)

ruby sqlite datamapper sinatra

13
推荐指数
1
解决办法
4424
查看次数