标签: sinatra

Sinatra对控制器等Web服务的好处

我正在编写一个简单的ruby控制器,只需要作为Web服务响应一堆移动客户端.

有人告诉我,我应该看看Sinatra.将Sinatra用于这么简单的事情有什么意义?他提到它会"更快"但是如何在某些东西之上使包装更快?

我不想让事情过于复杂; 一个简单的控制器很容易编写,维护的宝石也少.我错过了Sinatra提供的东西,这值得额外的麻烦吗?

谢谢

ruby ruby-on-rails sinatra

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

Ruby w/Sinatra:我可以举一个jQuery AJAX请求的例子吗?

%a{:href => "/new_game?human_is_first=true", :remote => "true"}
            %span Yes
Run Code Online (Sandbox Code Playgroud)

以上是我的链接.只是想知道如何处理这个问题.我需要能够执行一些JavaScript.下面是我使用rails时的.js.erb文件.

$('.welcome_container').fadeOut(500, function(){
  $( '.shell' ).html( "<%= escape_javascript( render( :partial => "board/board" ) ) %>" );
  $('.board_container').fadeIn(500);
});
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,在app.rb中调用Once/new_game,我希望能够将一些javascript发送到当前页面(不离开页面,并进行部分渲染)

ruby sinatra

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

DataMapper - 单表继承

有人可以向我解释这里发生了什么吗?

这是一个我放在一起展示你们最新情况的例子:

class Person
  include DataMapper::Resource
  property :id, Serial
  property :type, Discriminator
  property :name, String
  property :age, Integer
end

class Male < Person
end

class Father < Male
  property :job, String
end

class Son < Male
end

class Female < Person
end

class Mother < Female
  property :favorite_song, String
end

class Daughter < Female
end

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

如果我打电话给Person.all我:

Person.all
=> [#<Son @id=1 @type=Son @name="Mike" @age=23 @status=nil>, 
#<Son @id=2 @type=Son @name="Carlos" @age=12 @status=nil>, 
#<Father @id=3 @type=Father @name="Robert" @age=55 @job=<not loaded>>, …
Run Code Online (Sandbox Code Playgroud)

ruby single-table-inheritance sinatra ruby-datamapper

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

如何使用Sinatra和Sequel从复选框HTML表单中获取数组?

这是我的表格:

<form action="/results" method="post" name="checkbox_form">
    <input type="checkbox" name="item" value="Bacon">Bacon (1 lb., sliced)<br>
    <input type="checkbox" name="item" value="Eggs (dozen)">Eggs (1 dozen)
    <input type="submit" value="Calculate">
</form>
Run Code Online (Sandbox Code Playgroud)

如果用户选中"培根"和"鸡蛋(1打)"框,我如何使用Sinatra和/或Sequel返回此数组:

["Bacon","Eggs (dozen)"]
Run Code Online (Sandbox Code Playgroud)

如您所见,数组元素是表单的"值"元素.

作为一个侧面问题:Sinatra如何处理复选框表格?我在Sinatra手册中找不到任何好的信息.

html ruby forms checkbox sinatra

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

如何在Sinatra中使用ActiveRecord :: Observer?

我在Sinatra 1.3.3应用程序中成功使用ActiveRecord 3.2.9.我希望能够使用ActiveRecord :: Observer类,但我不确定如何激活它们.

ActiveRecord :: Observer 文档特定于Rails有关此特定位:

要激活观察者,请在config/application.rb文件的config.active_record.observers配置设置中列出它.

当然,我没有设置此设置的"config"对象.有任何想法吗?

编辑

我尝试像这样激活观察者:

ActiveRecord::Base.observers = [ :thermometer_reading_observer ]
Run Code Online (Sandbox Code Playgroud)

这样做,因为它们设置正确,但它们仍然没有做任何事情:

[4] pry(main)> ActiveRecord::Base.observers
=> [:thermometer_reading_observer]
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails sinatra

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

是否有一种红宝石方法使日期和时间更具可读性?

我正在使用一个API,其中返回的日期类似于:2012-11-30 12:54:59 -0800.我想知道是否有一个Ruby方法可以将其作为输入并返回"今天",例如.

其他首选输出将是"大约一小时前","刚刚","一个月前".

我正在使用Sinatra.

ruby gem datetime date sinatra

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

Sinatra基于数据库的会话

我目前正在使用带有Heroku的Sinatra,唯一的同步是数据库.因此,我需要存储在数据库中的会话(希望不使用ActiveRecord).

是否有Rack中间件或其他类似的东西?

session heroku sinatra

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

Sinatra的奇怪问题

好吧,这是非常奇怪的(对我而言),我的主分支中的一切工作正常,然后我创建了一个名为twitter的新分支来进行一些twitter feed实现.我已经完成了这个并且昨天在我的linux机器上工作..我今天在Windows环境中拉动了分支但是当我加载应用程序时我现在得到常规的Sinatra 404 Sinatra不知道这个小曲.

这是我的profile.rb文件

require 'bundler/setup'
Bundler.require(:default)
require 'rubygems'
require 'sinatra'
require './config/config.rb' if File.exists?('./config/config.rb')
require 'sinatra/jsonp'
require 'twitter'
require 'sinatra/static_assets'


class Profile < Sinatra::Base

helpers Sinatra::Jsonp
enable :json_pretty
register Sinatra::StaticAssets

@@twitter_client = Twitter::Client.new(
:consumer_key       => ENV["CONSUMER_KEY"],
:consumer_secret    => ENV["CONSUMER_SECRET"],
:oauth_token        => ENV["OAUTH_TOKEN"],
:oauth_token_secret => ENV["OAUTH_SECRET"],
)


get '/' do
 erb :index
end


get '/feed' do
 jsonp @@twitter_client.user_timeline('richl14').map(&:attrs)
end


end
Run Code Online (Sandbox Code Playgroud)

Config.ru

  require './profile'

  run Profile
Run Code Online (Sandbox Code Playgroud)

有没有人对我需要解决的问题有任何想法?任何人都可以从中获得经验吗?

谢谢

ruby sinatra

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

你如何将所有Sinatra响应设置为JSON?

我已经能够将所有内容类型设置为before块中的JSON ,但是在过滤器之后是否有一个sinatra允许我在所有响应上运行to_json(而不是to_json在下面的示例中写入3次)​​?

require 'sinatra'
require 'json'

before do
  content_type :json
end

get '/' do
  { song: "Hello" }.to_json
end

get '/go' do
  { song: "Go Yo Ho" }.to_json
end

get '/hi' do
  { song: "Wake me Up" }.to_json
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

json sinatra

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

Sinatra和ActiveRecord(无Rails) - 创建测试数据库

我正在尝试使用带有ActiveRecord的Sinatra的更简单的设置,我遇到了一些令人费解的问题,并且会喜欢另一组眼睛.我将提供所有相关文件:

database.yml的:

development:
  adapter: sqlite3
  database: db/development.sqlite3

test:
  adapter: sqlite3
  database: db/test.sqlite3

production:
  url: <%= ENV['DATABASE_URL'] %>
Run Code Online (Sandbox Code Playgroud)

Rake文件:

require_relative "demo_app"
require 'sinatra/activerecord/rake'
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = "test/*_test.rb"
end
Run Code Online (Sandbox Code Playgroud)

test_helper.rb中:

ENV['RACK_ENV'] = 'test'
ENV["SINATRA_ENV"] = "test"

require_relative '../demo_app'
require 'minitest/autorun'
require 'rack/test'

ActiveRecord::Migration.maintain_test_schema!
Run Code Online (Sandbox Code Playgroud)

迁移文件:

class CreatePeople < ActiveRecord::Migration
  def change
    create_table :people do |t|
      t.string :name
      t.date :dob
      t.string :gender
      t.string :gender
      t.integer :zipcode
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,我想对测试数据库运行测试.当我尝试做的时候

rake db:create RAILS_ENV=test - 它创建了一个development.sqlite3

rake db:migrate RAILS_ENV=test - 相同+运行迁移 …

ruby-on-rails sinatra sinatra-activerecord

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