标签: sinatra

Sinatra以编程方式获取有关服务的端口和其他信息

我有一个sinatra服务foo.rb

要运行它,我在不同的端口上输入"ruby foo.rb -p 5000".

当程序运行时,我希望能够获得端口(在这种情况下为5000)和其他信息.有没有办法在应用程序运行时获取这样的信息?

谢谢

ruby web-services sinatra

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

找不到child_model(NameError)

我无法确定为什么我在这里收到名称错误.我是DataMapper的新手,但尝试关联.任何帮助表示赞赏.

用户:

class User
  include DataMapper::Resource

  property :id,            Serial, :key => true
  property :first_name,    String
  property :last_name,     String
  property :company,       String
  property :city,          String
  property :country,       String
  property :mobile_number, Integer
  property :email_address, String
  property :shahash,       String
  property :isRegistered,  Boolean

  belongs_to :event, :required => true
end

DataMapper.auto_upgrade!
Run Code Online (Sandbox Code Playgroud)

事件:

class Event
  include DataMapper::Resource

  property :id,          Serial, :key => true
  property :name,        String
  property :occuring,    DateTime

  has n, :user
end

DataMapper.auto_upgrade!
Run Code Online (Sandbox Code Playgroud)

ruby datamapper sinatra

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

Ruby/Sinatra - 已初始化常量WFKV_

运行ruby 1.9.2p290和最新版本的Sinatra.

当我尝试运行我的Sinatra应用程序时

  ruby application.rb 
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

  C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_
Run Code Online (Sandbox Code Playgroud)

我检查了Rake"已初始化常量WFKV_"警告并尝试修复但没有成功.http:// localhost:4567 /也没有产生任何结果.

ruby rubygems sinatra

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

使用Ruby/Sinatra和JRuby或Scala构建REST API

我正在构建一个新的REST API,它将取代现有的REST API.较旧的API被编写为使用Java构建的SOAP API,这就是问题所在.大多数数据访问层库都是用Java编写的,如果我们可以使用这些库将是一个很好的资产.

到目前为止,我们的两个选项是:Ruby/SinatraScala/Lift

我们还可以在Ruby/Sinatra堆栈上使用JRuby,以便使用我之前提到的Java库.我们主要担心的是可能的JRuby-Java库不兼容......

您认为最好的方法是什么?

ruby api scala jruby sinatra

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

Sinatra - 通过config.ru设置缓存控制标头

我目前在Heroku的Cedar堆栈上运行Octopress(基于Jekyll)站点 - 代码存在于此:https://github.com/elithrar/octopress

我想Cache-Control根据文件类型有选择地应用标头:

  • .html files的值为 public, max-age=3600
  • .css|.js|.png|.ico(等)获取值public, max-age=604800- 或者,我想将此规则应用于从/stylesheets', '/javascripts', '/imgs'目录提供的任何内容.

既没有运气又使用set :static_cache_control , [:public, :max_age => 3600]了香草语cache_control :public, :max_age => 3600.

我已设法自己设置public, max-age=3600文章(例如/2012/lazy-sundays/),但无法将标题应用于CSS/JS(例如/stylesheets/screen.css)

config.ru目前看起来像这样(更新):

require 'bundler/setup'
require 'sinatra/base'

# The project root directory
$root = ::File.dirname(__FILE__)

class SinatraStaticServer < Sinatra::Base

  get(/.+/) do
    cache_control :public, :max_age => 7200
    send_sinatra_file(request.path) {404}
  end

  not_found do
    send_sinatra_file('404.html') …
Run Code Online (Sandbox Code Playgroud)

ruby rack heroku sinatra jekyll

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

捕获续集::错误异常

我有一个使用Sequel和Postgres的Sinatra应用程序......这是一个非常简单的模块,可以插入到数据库中.我想从插入中捕获任何错误并返回有用的消息.

我的代码如下:

begin
   sql = DB["INSERT INTO table (id, firstname, lastname, ...) values (......)"]
   ds.insert
rescue Sequel::Error
   ...
end
Run Code Online (Sandbox Code Playgroud)

如何捕获实际错误?我可以把"有一个错误"打印出来,但我想要更具体的东西 - 比如"名字是必需的","姓氏是必需的".

有人可以帮忙吗?

ruby sinatra sequel

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

Sinatra的Rufus调度程序

我在Sinatra应用程序中使用Rufus调度程序.我可以从"scheduler do"块中访问辅助方法吗?我没有设法做到这一点(我得到一个"未定义的方法`检查'为main:Object"错误)所以现在我必须在helpers块中定义方法(在"post"/"do"块中使用它也)然后将方法的主体复制到调度程序块.它没有意义:(有没有办法避免重复?我可以在其他地方定义一个方法并在调度程序中调用它吗?

ruby scheduled-tasks sinatra rufus-scheduler

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

如何在路线中使用Sinatra URL作为参数?

我正在使用Sinatra路由,如果可能的话,我想解释一个普通的HTTP地址作为路由中的参数:

url http://somesite/blog/archives   
Run Code Online (Sandbox Code Playgroud)

路线是:

/http://somesite/blog/archives 
Run Code Online (Sandbox Code Playgroud)

代码是:

get '/:url' do |u|  
(some code dealing with url)
Run Code Online (Sandbox Code Playgroud)

HTTP URL中的各种"/"正在产生问题.

我找到的解决方法是仅传递上面示例中"somesite"所代表的URL部分,然后使用:

get '/:url' do |u|
buildUrl = "http://#{u}/blog/archives"
(some code dealing with url)
Run Code Online (Sandbox Code Playgroud)

有没有办法直接处理完整的URL?

ruby routes sinatra

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

Python相当于ruby Gem文件

所以我有一个在服务器上运行的ruby sinatra程序,我有一个Gem文件,以确保安装所有的依赖项.然而,它调用一个python脚本,它有自己的python模块依赖项.因此,当它部署到服务器时,所有红宝石宝石的依赖性都很好但不是它们的python依赖性.

有一个python等效的Gem文件?或者有没有办法通过Gem文件安装python模块?

我已经向我建议过buildr,但这似乎是基于java的程序.

任何帮助将非常感激.

ruby python sinatra gemfile

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

在Sinatra模块化应用程序中设置RSpec

这是我与Sinatra的第一次尝试.我构建了一个简单的经典应用程序,为它设置RSpec,并让它工作.然后,我尝试以MVC方式进行模块化.即使应用程序在浏览器中工作,RSpec也会抛出一个NoMethodError.我已经阅读过关于RSpec的Sinatra文档,在SO中也搜索了很多,但我找不到bug的位置.任何线索?

非常感谢你提前.

这是我的相关文件:

config.ru

require 'sinatra/base'

Dir.glob('./{app/controllers}/*.rb') { |file| require file }

map('/') { run ApplicationController }
Run Code Online (Sandbox Code Playgroud)

app.rb

require 'sinatra/base'

class ZerifApp < Sinatra::Base
  # Only start the server if this file has been
  # executed directly
  run! if __FILE__ == $0
end
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ application_controller.rb

class ApplicationController < Sinatra::Base
  set :views, File.expand_path('../../views', __FILE__)
  set :public_dir, File.expand_path('../../../public', __FILE__)

  get '/' do
    erb :index
  end
end
Run Code Online (Sandbox Code Playgroud)

投机/ spec_helper.rb

require 'rack/test'

# Also tried this
# Rack::Builder.parse_file(File.expand_path('../../config.ru', __FILE__))

require File.expand_path '../../app.rb', …
Run Code Online (Sandbox Code Playgroud)

ruby rspec sinatra

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