我将围绕一个服务实现一个简单的REST API包装器,并希望将Ruby与Sinatra一起用于此任务.
想法是让用户使用双腿OAuth(2.0)验证/签署请求.
我应该尝试使用像warden和addtional oauth 2.0 addon(例如warden-oauth2)这样的身份验证框架,还是应该使用像rack-oauth2-server这样的基于机架的解决方案.基于机架的方法似乎依赖于MongoDB,这是好的,但我宁愿最小化依赖性.
干杯,
马克
我正在考虑为我的iOS游戏添加一个功能,允许玩家创建自己的游戏关卡,与其他玩家分享,评分等等.有一个用户创建关卡的公共存储库,可按创建日期排序,评级,难度或其他标准.
这种功能需要第三方服务器.我在想我会使用Sinatra创建一个RESTful API并在Heroku上运行它.我的问题是:验证对此API的请求的最佳方法是什么?我宁愿不要求玩家创建用户名和密码.我想使用Game Center的ID系统.
有什么建议?我从来没有做任何服务器端的东西,所以任何帮助表示赞赏!
是的,我知道Apple没有提供自己的系统.但它确实让开发人员可以访问唯一的游戏中心标识符(developer.apple.com/library/mac/#documentation/ ...),我希望我能以某种方式使用它来滚动我自己的身份验证系统,而无需用户通过Facebook登录/微博/等.如果那是可能的.
我想创建一个带有可选查询参数的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有没有办法做到这一点?
你可以通过将它们放入public/(默认情况下)来为Sinatra提供静态文件- 我现在有一个index.html在那里,但是如何将根点指向该文件而不必将其解析为模板?
要清楚,我可以/index.html成功访问,并且我想路由/到相同的静态文件,但没有重定向.知道怎么做吗?
我正在尝试使用Rack :: Test为我的Sinatra应用程序编写RSpec测试.我无法理解如何使用cookies.例如,如果我的应用程序设置了cookie(不是通过:session),我该如何检查该cookie是否正确设置?
另外,如何使用该cookie发送请求?
如何转换此ERB代码:
<div <%= 'class="highlight"' if job.done %>>
Run Code Online (Sandbox Code Playgroud)
进入Haml代码?
我是骨干的新手,并试图在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框架在ruby中构建一个简单的应用程序.它主要是"获取" - 大多数请求将用于列出数据.但是,应用程序中有几个关键屏幕将收集用户输入.我想确保应用程序尽可能安全,并且目前正试图找到如何实现您在Rails表单中获得的真实性令牌?
我必须去的地方:嗯,我知道我需要csrf的令牌,但我不确定我是否需要自己生成它们,或者Sinatra是否可以为我做这些 - 我已经查看了文档并且他们说Sinatra正在使用机架保护,但是,我找不到它的任何示例代码,似乎无法弄清楚如何实现它 - 任何帮助升值 - 谢谢!
我对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)
它只返回零..
我只需要知道如何访问这些变量,或者如何配置我的请求参数以获得良好的格式来访问变量.
从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的例子,我有一些问题:
finalize被召集?db,生产服务器上没有文件,如何自动创建它?或者我必须project.db手动创建文件?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)