标签: sinatra

在Sinatra内召唤Sinatra

我有一个基于Sinatra的REST服务应用程序,我想从其中一个路由中调用其中一个资源,从而有效地组合另一个资源.例如

get '/someresource' do
  otherresource = get '/otherresource'
  # do something with otherresource, return a new resource
end

get '/otherresource' do
  # etc.
end
Run Code Online (Sandbox Code Playgroud)

重定向不起作用,因为我需要对第二个资源进行一些处理并从中创建一个新的.显然我可以a)使用RestClient或其他一些客户端框架或者b)构造我的代码所以其他资源的所有逻辑都在一个方法中然后调用它,但是,如果我可以重新使用它感觉会更清洁使用他们的DSL从Sinatra内部使用我的资源.

ruby sinatra

15
推荐指数
3
解决办法
5404
查看次数

git tree + Heroku + Github中的密码

我在Sinatra完成了一个非常基本的应用程序我已经在Heroku中部署了它(http://frasesbarrio.heroku.com)

Facebook上有一个共享按钮,实际上它可以用作Facebook应用程序.对于Facebook身份验证,我的应用程序有自己的app id和app secret(现在它们是源代码主文件中的两个常量)

我也想在Github上分享我的代码,供大家欣赏.

如何将带有应用程序ID和密码的代码发送到Heroku,而不是以可维护的方式将它们发送给Github?(我的意思是我会不断更改应用程序,在每次更改后部署并发送给Github)

git github heroku sinatra

15
推荐指数
1
解决办法
1202
查看次数

外部文件中的sinatra助手

我的主要Sinatra project_name.rb中有很多帮助器,我想将它们移到外部文件中,这样做的最佳做法是什么?

来自./preject_name.rb

   helpers do
     ...#bunch of helpers
   end
Run Code Online (Sandbox Code Playgroud)

例如./helpers/something.rb

谢谢

sinatra

15
推荐指数
3
解决办法
8977
查看次数

Sinatra access-control-allow-origin for sinatra public folder

如何设置Sinatra以便使用响应Access-Control-Allow-Origin ="*"返回公用文件夹中的静态文件?

html sinatra

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

如何使用rspec在sinatra中测试重定向?

我试图在我的sinatra应用程序(更具体地说,一个padrino应用程序)的主页上测试重定向,在rspec中.我发现redirect_to,但它似乎只在rspec-rails中.你如何在sinatra中测试它?

所以基本上,我喜欢这样的东西:

  it "Homepage should redirect to locations#index" do
    get "/"
    last_response.should be_redirect   # This works, but I want it to be more specific
    # last_response.should redirect_to('/locations') # Only works for rspec-rails
  end
Run Code Online (Sandbox Code Playgroud)

ruby rspec sinatra padrino

15
推荐指数
2
解决办法
5838
查看次数

从实例方法中获取sinatra环境

确定环境的正确方法是什么?现在我正在使用:

class Main < Sinatra::Base
    get '/' do
        puts self.class.development?
        puts self.class.production?
    end
end
Run Code Online (Sandbox Code Playgroud)

但这似乎不对.

ruby sinatra

15
推荐指数
2
解决办法
9045
查看次数

使用bundler为不同平台加载不同版本的gem

所以我正在为Windows和Linux开发Sinatra.问题是我使用的是Thin而不是Webrick,而eventmachine for windows仅适用于预发布版本,而linux使用最新的稳定版本.在gemfile中你当然不能包含不同版本的相同gem,如下所示:

gem "eventmachine", "~> 1.0.0.beta.4.1", :group => :development_win
gem "eventmachine", group => :development_linux
gem "thin
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法解决这个问题,可能使用一个用于windows的gemfile和一个用于linux的gemfile,该命令将加载一个或另一个.

或者有一种方法可能在git中管理两个不同平台的gemfile,也许只通过文件的分支(不知道这是否可能来自我读过的git分支).

ruby git sinatra bundler

15
推荐指数
1
解决办法
4946
查看次数

在过滤Sinatra中的所有POST请求之前?

有没有办法创建一个"之前"过滤器来捕获和预处理Sinatra中的所有POST请求?

ruby filter sinatra

15
推荐指数
3
解决办法
6892
查看次数

如何使用Rspec在Sinatra中测试助手块?

我正在编写一个sinatra应用程序并使用rspec和rack/test进行测试(如sinatrarb.com所述).
到目前为止,它一直很棒,直到我将一些相当程序化的代码从我的域对象移动到sinatra助手.

从那时起,我一直在试图弄清楚如何隔离测试这些?

ruby testing rack rspec sinatra

14
推荐指数
3
解决办法
4893
查看次数

切片参数哈希特定值

摘要

给定Hash,基于要使用的键列表创建子集Hash的最有效方法是什么?

h1 = { a:1, b:2, c:3 }        # Given a hash...
p foo( h1, :a, :c, :d )       # ...create a method that...
#=> { :a=>1, :c=>3, :d=>nil } # ...returns specified keys...
#=> { :a=>1, :c=>3 }          # ...or perhaps only keys that exist
Run Code Online (Sandbox Code Playgroud)

细节

续集数据库工具包允许一个通过传递一个Hash创建或更新模型实例:

foo = Product.create( hash_of_column_values )
foo.update( another_hash )
Run Code Online (Sandbox Code Playgroud)

西纳特拉 Web框架使可用命名一个哈希params包括表单变量,查询字符串参数也路由匹配.

如果我创建一个只包含与数据库列相同的字段的表单并将其发布到此路由,则一切都非常方便:

post "/create_product" do
  new_product = Product.create params
  redirect "/product/#{new_product.id}"
end
Run Code Online (Sandbox Code Playgroud)

然而,这既脆弱又危险.这是危险的,因为恶意黑客可以发布一个表格,其中的列不打算更改并更新.它很脆弱,因为在这条路线上使用相同的形式是行不通的:

post "/update_product/:foo" do |prod_id| …
Run Code Online (Sandbox Code Playgroud)

ruby hash sinatra sequel

14
推荐指数
2
解决办法
7249
查看次数

标签 统计

sinatra ×10

ruby ×7

git ×2

rspec ×2

bundler ×1

filter ×1

github ×1

hash ×1

heroku ×1

html ×1

padrino ×1

rack ×1

sequel ×1

testing ×1