标签: sinatra

如何在Sinatra中检测URL中的语言

我有一个多语言网站,我把这种语言放在像domain.com/en/这样的网址中.当用户未将该语言放入URL时,我想将其重定向到主要语言的页面,如"domain.com/posts"到"domain.com/en/posts".Sinatra有一个简单的方法吗?

我有一百多条路线.因此,为每条路线做这件事并不是一个很好的选择.

获取"/:locale/posts"do ... end

得到"/帖子"做...结束

有人能帮我吗?

谢谢

url url-routing internationalization sinatra padrino

3
推荐指数
1
解决办法
2139
查看次数

用户管理使用sinatra

我需要使用Sinatra为我的应用程序创建一个基本的用户管理系统,但我不确定如何考虑它.

它需要:

  • 注册用户

  • 登录用户

我该怎么想呢?这应该不难,我只是对这一切都很新.

谢谢.

ruby ruby-on-rails sinatra

3
推荐指数
1
解决办法
2048
查看次数

运行ruby应用程序时,Sinatra不会加载

我正在尝试在Ubuntu 10.10中运行需要Sinatra的Ruby应用程序.我是这些技术中的3种新手,所以我理解这个问题对你来说是否显得愚蠢.

昨天我安装了ruby做...... sudo apt-get install ruby1.9.1-full

和sinatra做... sudo gem install sinatra

这是我正在尝试运行的代码:

require 'rubygems'
require 'sinatra'

get '/' do
    "Hi Alex!"
end
Run Code Online (Sandbox Code Playgroud)

当我ruby1.9.1 -rubygems app.rb没有做任何事情时(Ruby已正确安装,因为我尝试运行不需要sinatra的应用程序,它们工作正常).

$ ls
app.rb
$ 
$ ruby1.9.1 app.rb
$
$ ruby1.9.1 -rubygems app.rb
$ 
Run Code Online (Sandbox Code Playgroud)

我知道它应该打开Sinatra并告诉我它正在听哪个端口.

我一直在寻找网上的帮助,并阅读在这个论坛中创建的几个主题,但我尝试过的任何东西都没有为我解决.

这可能发生什么?

谢谢

ruby rubygems sinatra

3
推荐指数
1
解决办法
1863
查看次数

Rack应用程序和Sinatra应用程序之间有什么区别?

使用Rack应用程序而不是sinatra应用程序有什么优势?

谢谢

rack sinatra

3
推荐指数
1
解决办法
2049
查看次数

如何在coffeescript模板中访问sinatra类变量

如何从coffeescript模板中访问ruby实例变量?

在sinatra文档中,它表示模板在与调用该模板的路径相同的范围内进行评估.

所以,我有以下sinatra应用程序:

server.rb:

require "sinatra"
require "coffee-script"

get '/app.js' do
  @str = "Hello"
  coffee :app
end
Run Code Online (Sandbox Code Playgroud)

在views/app.coffe文件中我想使用@str变量.可能吗?如果是这样,我如何访问@str变量?

ruby sinatra coffeescript

3
推荐指数
1
解决办法
1392
查看次数

Thin&Sinatra没有接收端口

我在使用Thin和Sinatra设置我的应用程序时遇到了问题.我创建了一个包含以下设置的development-config.ru文件:

# This is a rack configuration file to fire up the Sinatra application.
# This allows better control and configuration as we are using the modular
# approach here for controlling our application.
#
# Extend the Ruby load path with the root of the API and the lib folder
# so that we can automatically include all our own custom classes. This makes
# the requiring of files a bit cleaner and easier to maintain.
# This is …
Run Code Online (Sandbox Code Playgroud)

ruby rack thin sinatra

3
推荐指数
1
解决办法
1877
查看次数

当我在AppFog上访问Sinatra应用程序时,会显示"禁止"消息

我上传了一个简单的Sinatra应用程序到AppFog.它在我的本地机器上运行良好.但在将应用程序上传到AppFog后,当我访问AppFog域时,会显示带有"禁止"消息的页面.

这些是appFog日志:

====> /logs/stderr.log <====
...
W, [2012-06-01T06:32:54.008426 #28933]  WARN -- : attack prevented by Rack::Protection::IPSpoofing
211.32.146.42 - - [01/Jun/2012 06:32:54] "GET / HTTP/1.1" 403 - 0.0002
10.0.64.157 - - [01/Jun/2012:06:32:54 UTC] "GET / HTTP/1.0" 403 9 - -> /
W, [2012-06-01T06:32:54.393022 #28933]  WARN -- : attack prevented by Rack::Protection::IPSpoofing
211.32.146.42 - - [01/Jun/2012 06:32:54] "GET /favicon.ico HTTP/1.1" 403 - 0.0002
10.0.64.157 - - [01/Jun/2012:06:32:54 UTC] "GET /favicon.ico HTTP/1.0" 403 9 - -> /favicon.ico
Run Code Online (Sandbox Code Playgroud)

我没有Rack::Protection::IPSpoofing在我的代码中使用,但我得到了这些错误.Rack::Utils …

ruby rack sinatra paas

3
推荐指数
1
解决办法
873
查看次数

从Sinatra的管道cURL读取PUT数据

我正在重写Sinatra中的一个小型服务器后端,目前客户端通过cURL调用与它进行通信echo "foo" | curl -X PUT -T - http://localhost:8090/.问题是,在我put在Sinatra的方法中request.body.read,即使在我打电话之后rewind,它总是空的.此外,params哈希是完全空的.

奇怪的是,如果我这样做,curl -X PUT -d 'foo' http://localhost:8090/它就会起作用.另外,在node.js中我可以使用request.on('data')request.on('end')函数读取它.

有没有办法PUT在Sinatra 阅读身体?如果可能的话,我想避免更改客户端代码.

curl pipe put request sinatra

3
推荐指数
1
解决办法
6203
查看次数

批量更新属性

我正在使用Sinatra,但我猜这也适用于Rails(如果没有,请删除标签或让我知道,我将删除它).

我有一个ActiveRecord :: Base类User.它有很多属性,我正在显示一个允许某人更新特定用户的页面.问题是,我很难以干燥的方式实现更新功能.我的意思是,当我收到paramsPOST请求时,我可以这样做:

a_user.update_attributes params
Run Code Online (Sandbox Code Playgroud)

因为params也含有其他垃圾(比如:splat- 那是什么?),它会抛出一个未知的属性错误.我需要做的是:

a_user.update_attributes {:attrA => params[:attrA], 
                          :attrB => params[:attrB], ...etc } 
Run Code Online (Sandbox Code Playgroud)

(请记住,有很多属性)

这是我应该怎么做的?对我来说,出于某种原因......感觉不对.例如,如果我有另一个需要以类似方式更新的模型,我必须再次手动重写所有属性.

我正在寻找的是一些像:

a_user.filter_and_update_attributes params
Run Code Online (Sandbox Code Playgroud)

其中filter_and_update_attributes自动过滤任何坏/未知属性的参数,我可以在任何模型的任何地方使用它,必须重写这么多无用的代码.

谢谢

ruby activerecord ruby-on-rails sinatra

3
推荐指数
1
解决办法
1414
查看次数

Sinatra请求对象

我可能在这里遗漏了一些非常明显的东西,但我似乎无法找到答案,或者自己解决这个问题.在Sinatra中,他们有一个self.get捕获块的方法,当一个块被调用时,你可以在request里面使用变量,这怎么可能?

西纳特拉

module Sinatra
  class Base
    class Request < Rack::Request   
    end

    attr_accessor :request

    def call!(env)
      @request = Request.new(env)
    end

    class << self
      def get(path, opts = {}, &block)
        ...
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

应用

class App < Sinatra::Base
  get '/' do
    puts request
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby methods class sinatra

3
推荐指数
1
解决办法
1580
查看次数