标签: sinatra

Ruby Sinatra - 在mongoHQ上连接到mongoDB失败了

这只是我周末的项目/研究,我是Sinatra和MongoDB的新手.

我已经为mongoDB安装了宝石,例如:mongo,mongo_mapper和mongoid.

当我尝试从localhost连接到MongoHQ上的数据库时,遇到了这样的错误:

Mongo::ConnectionFailure at /
failed to connect to any given host:port

    * file: connection.rb
    * location: connect
    * line: 489
Run Code Online (Sandbox Code Playgroud)

在SO上找到了类似的帖子,但坦率地说,我不太明白答案......

这是我的代码片段:

require 'rubygems'
require 'sinatra'
require 'mongo'
require 'mongo_mapper'

get '/' do
  MongoMapper.connection = Mongo::Connection.new('flame.mongohq.com', 27044)
  MongoMapper.database = 'notes'
  MongoMapper.database.authenticate('foo', 'bar')
  erb :list
end
Run Code Online (Sandbox Code Playgroud)

我从这里拿了上面的代码,但似乎没有用......

哪部分错了?还有另一种方法吗?最后,这个测试Web应用程序将部署到heroku上,所以我希望该解决方案可以同时使用localhost和我的heroku服务器.

更新:

I just created a minimal code snippet to test the mongodb connection:
require 'rubygems'
require 'mongo'

db = Mongo::Connection.new("flame.mongohq.com", 27044).db("notes")
Run Code Online (Sandbox Code Playgroud)

但是在超时后仍然出现错误:

$ ruby mongodbtest.rb …
Run Code Online (Sandbox Code Playgroud)

ruby heroku sinatra mongodb mongomapper

5
推荐指数
1
解决办法
3370
查看次数

Carrierwave - 处理图像时出错

问题是mongoids save!动作引发的以下错误.

Mongoid::Errors::Validations: Validation failed - Img failed to be processed.
~/.rvm/gems/ruby-1.8.7-p249/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb:234:in `fail_validate!'
~/.rvm/gems/ruby-1.8.7-p249/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb:75:in `save!'
./app.rb:29:in `POST /upload'
Run Code Online (Sandbox Code Playgroud)

设置主要是以下内容:

require "sinatra"     # 1.1.2
require "mongoid"     # 2.0.0.beta.19
require "rmagick"     # 2.12.2
require "carrierwave" # 0.5.1
require "carrierwave/orm/mongoid"
require 'carrierwave/processing/rmagick'
....


Mongoid.database = Mongo::Connection.new('somehost', 1234).db('test')

class Uploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads"
  end

 process :resize_to_fit => [80, 80]
end


class Image
  include Mongoid::Document

  mount_uploader :img, Uploader
end


....

post '/upload' do
  @img = Image.new
  @img.img = …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra mongoid carrierwave

5
推荐指数
1
解决办法
2226
查看次数

Sinatra Warden使用现有的Ruby on Rails应用程序,使用Devise

我试图拆分我目前的Ruby on Rails 3 Web应用程序和它的Web服务(API).我的Web应用程序在Heroku上运行,并在我的应用程序中将API实现为命名空间路由.例如,/events返回HTML页面并/api/v1/events返回JSON数据.

根据一些最佳实践,我想将它们分成两个不同的应用程序.我选择了Sinatra来实现API应用程序.它现在适用于不需要身份验证的简单请求.

我的Ruby on Rails 3应用程序正在使用Devise来验证用户身份.还可以使用Facebook帐户登录.现在我想要实现的是使用Warden通过我的基于Sinatra的API对用户进行HTTP基本身份验证(包括注册).

最好的方法是什么?或者也许我可以使用与Warden不同的东西?

请记住,我对Rack不是很熟悉:)

authentication sinatra devise warden ruby-on-rails-3

5
推荐指数
1
解决办法
4977
查看次数

jquery和random.org"Access-Control-Allow-Origin不允许"

我在使用jQuery从random.org请求随机数时遇到问题.当我使用静态页面和以下javascript时,我没有任何问题得到随机数.但是,我正在Heroku上托管一个Sinatra应用程序(同样,当使用Thin在本地生产我的应用程序时)我得到"(Access-Control-Allow-Origin"不允许"(网站)".

function raffler(){

var rowCount = $('#winnerTable tr').length;

$('#winnerButton').click(function() {
    $.get("http://www.random.org/integers/?", {num: "1", min: "1", max: rowCount, col: "1", base: "10", format: "plain", rnd: "new"}, function(randNum) {
        var myNumber = randNum;
        $("#entry-" + randNum).addClass('winner');
    });
});

};
Run Code Online (Sandbox Code Playgroud)

思考?

jquery sinatra

5
推荐指数
1
解决办法
827
查看次数

使用Ruby检索唯一记录将MongoDB _id转换为ObjectID对象

我正在尝试使用标准类型ObjectID的_id检索存储在MongoDB中的文档.我将_id表示为字符串.在这个例子中它是"4ec064e406a6f1205a000001"

所以我这样做:

require 'mongo'

connection = Mongo::Connection.new("localhost", 27017).db("store")
collection = connection.collection("products")

id = '4ec064e406a6f1205a000001'

# What should the following line be? This doesn't work.
collection.find_one("_id" => Mongo::ObjectID.from_string(id))
Run Code Online (Sandbox Code Playgroud)

我意识到这是一个BSON ObjectID,我尝试了一些不同的方法来使用bson gem生成正确的对象,但我无法让它工作.我也尝试使用类似的代码将对象的_id中的一个更改为标准的Int32,并且它工作正常.我不知道如何创建用于此查询的正确ObjectID对象.

谢谢!

ruby ruby-on-rails sinatra mongodb nosql

5
推荐指数
1
解决办法
2780
查看次数

设置站点/用户名字段ActiveResource基于高层宝石

我正在构建一个sinatra应用程序,它将使用Highrise CRM gem访问Highrise数据.从wiki中使用这个gem的示例代码,

require 'highrise' 
Highrise::Base.site = 'https://your_site.highrisehq.com' 
Highrise::Base.user = 'api-auth-token' 
Run Code Online (Sandbox Code Playgroud)

我想为每个请求更改用户和站点字段,因为每个请求可以针对不同的用户.目前这些是类变量.即使我为每个请求设置了这些字段,当多线程场景中有多个请求时,这不会导致竞争条件吗?有人可以建议以线程安全的方式为每个请求设置用户/站点字段的最佳实践吗?

activeresource highrise sinatra

5
推荐指数
0
解决办法
234
查看次数

Sinatra + Heroku + Datamapper使用dm-sqlite-adapter部署问题

由于某种原因,heroku试图要求dm-sqlite-adapter,即使它应该在这里使用Postgres.请注意,当我打开任何URL时会发生这种情况 - 而不是在git push本身.

我建立了默认的Facebook应用程序.

Gemfile:

source :gemcutter

gem "foreman"

gem "sinatra"
gem "mogli"
gem "json"
gem "httparty"
gem "thin"
gem "data_mapper"
gem "heroku"

group :production do
    gem "pg"
    gem "dm-postgres-adapter"
end

group :development, :test do
    gem "sqlite3"
    gem "dm-sqlite-adapter"
end
Run Code Online (Sandbox Code Playgroud)

数据映射器设置:

# Setting up the database
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/data/mydatabase.db")
Run Code Online (Sandbox Code Playgroud)

打开任何URL时的相关日志片段:

Starting process with command `bundle exec thin -R config.ru start -p 34984`
2012-01-18T15:11:55+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in `require': no such file to load -- dm-sqlite-adapter (LoadError)
2012-01-18T15:11:55+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in …
Run Code Online (Sandbox Code Playgroud)

ruby datamapper heroku sinatra

5
推荐指数
1
解决办法
2824
查看次数

机械化和Sinatra冲突

我使用Mechanize作为命令行实用程序编写了一个简单的Web爬网程序.然后我决定使用Sinatra创建Web应用程序,但在尝试运行本地Web服务器时遇到了这个错误:

/home/nazar/.rvm/gems/ruby-2.0.0-p195/gems/sinatra-1.4.2/lib/sinatra/base.rb:1569:in `run!': undefined method `run' for HTTP:Module (NoMethodError)
from /home/nazar/.rvm/gems/ruby-2.0.0-p195/gems/sinatra-1.4.2/lib/sinatra/main.rb:25:in `block in <module:Sinatra>'
Run Code Online (Sandbox Code Playgroud)

源代码很简单:

require 'sinatra'
require 'mechanize'

get '/' do
   # mechanize stuff
end
Run Code Online (Sandbox Code Playgroud)

我经历了一些调查,并设法发现2个宝石分别工作正常,但只有它们合并才会导致问题.任何人都可以指出问题可能是什么?

ruby mechanize sinatra

5
推荐指数
1
解决办法
869
查看次数

如何在Sinatra中为布局设置自定义目录?

我有一个有多种布局的Sinatra应用程序.我想将它们隔离到自己的子目录中views:

app.rb
views/
views/layouts/
views/layouts/default.haml
views/layouts/print.haml
views/layouts/mobile.haml
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了我必须使用每个渲染调用显式设置布局:

get '/' do
    haml :index, {:layout => :'layouts/default'}
end
Run Code Online (Sandbox Code Playgroud)

有没有办法全局设置布局(例如,对于模块中的所有路径),或者告诉Sinatra在默认目录之外寻找布局?

layout sinatra

5
推荐指数
1
解决办法
2069
查看次数

node-webkit相当于sinatra?

我一直在考虑学习如何基于网络技术制作简单的Mac OS X应用程序,我遇到了node-webkit,这看起来很引人注目.但是,我最近投入了学习Sinatra/Ruby的基础知识,我想继续学习这门课程.

对于使用Sinatra的开发人员,是否存在"node-webkit等效"?或者,是否有推荐的方法使用Sinatra框架(或Ruby)来构建基本上是Web包装器的OS X应用程序?

ruby webkit sinatra chromium node-webkit

5
推荐指数
1
解决办法
763
查看次数