标签: sinatra

Sinatra,模块化风格.我做错了什么?

我使用Sinatra模块化风格,我不知道会发生什么变质.我搜索谷歌但没有找到任何东西

require 'sinatra/base'

class App < Sinatra::Base

  get '/' do
    haml '%h1 Test'
  end

end

run App
Run Code Online (Sandbox Code Playgroud)

并且看一下test.rb:12:在<main>': undefined method运行'for main:Object(NoMethodError)出了什么问题?

ruby sinatra

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

Ruby:接收并打印JSON对象

我想使用Ruby接收JSON对象.我写过:

require 'sinatra'
require 'json'

post '/' do
  push = JSON.parse(params[:payload])
  "I got some JSON: #{push.inspect}"
end
Run Code Online (Sandbox Code Playgroud)

而且我发送:

var options = {
                  host: 'localhost',
                  port: 4567,
                  path: '/',
                  method: 'POST'
                };

var myFirstJSON = { "payload" : { "headers" : 
                                            [{ "from" : from,
                                                "to"  : to,
                                                "subject" : subject }],
                                "body"    : 
                                            [{ "primeira_parte" : primeira_parte,
                                                "segunda_parte" : segunda_parte,
                                                "terceira_parte": terceira_parte }]
                                }};
            req.write(JSON.stringify(myFirstJSON));
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

TypeError - can't convert nil into String:


{"{\"payload\":{\"headers\":"=>{"{\"from\":\"test@test.com\",\"to\":\"test@test.com\",\"subject\":\"Testing\"}"=>{",\"body\":"=>{"{\"primeira_parte\":\"The following message to <test@test.com> was undeliverable.\\r\\nThe …
Run Code Online (Sandbox Code Playgroud)

javascript ruby sinatra node.js ruby-on-rails-3

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

Ruby Sinatra简单应用程序 - 原始POST数据

我想设置一个简单的Sinatra应用程序来捕获发送到/ URL的原始POST数据,并将此数据作为文件保存到文件系统,格式为YYYYMMDD-HHMMSS.json.

我将使用JSON格式的简单文本数据发布到URL的数据.

设置这个简单的Sinatra应用程序的最佳方法是什么?不确定如何捕获原始POST数据.

更新/代码:

post '/' do
    raw = request.env["rack.input"].read
    n = DateTime.now
    filename = n.strftime("%Y%m%d") + "T" + n.strftime("%H%M%S") #any way to include microseconds?
    # write to file
end
Run Code Online (Sandbox Code Playgroud)

ruby json sinatra raw-post

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

使用Datamapper配置MYSQL

我一直是sqlite3的用户(带有rails),直到现在我才有机会尝试使用mysql.我需要配置将它与Datamapper一起使用.在本教程之后,我需要使用以下命令安装dm-mysql-adapter:

sudo apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

我的.rb文件包含以下代码:

require 'data_mapper'
DataMapper.setup(:default, "mysql://user:password@hostname/database")

class Post
  include DataMapper::Resource
  property :id         , Serial
  property :title      , String
  property :body       , Text
  property :created_at , DateTime
end
Run Code Online (Sandbox Code Playgroud)

哪个没有运行,并给我以下错误:

in `require': no such file to load -- dm-mysql-adapter (LoadError)
Run Code Online (Sandbox Code Playgroud)

我相信,我需要设置用户名和密码才能启动并运行mysql,然后与Datamapper建立连接.有人可以指导我.

非常感谢!

ruby mysql datamapper sinatra

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

白色导航栏,Bootstrap中的放置问题

今天我想在Heroku的Sinatra应用程序中安装Twitter Bootstrap.不幸的是,存在一些显示问题:导航栏是白色而不是黑暗,并且内容的放置不正确.

我使用www.bootstrapcdn.com上的Bootstrap版本.我的应用程序在这里:http://sultry-depths-9340.herokuapp.com/这是我的layout.haml:http://pastebin.com/zWQ6H5st

谢谢

heroku sinatra twitter-bootstrap

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

使用Sinatra Reloader的模块化Sinatra App?

嗨,如果我有一个'主'sinatra文件与以下代码,

require 'sinatra'
require "sinatra/reloader"

class MyApp < Sinatra::Base
  configure do
    require "./rest/auth.rb"
    register Sinatra::Reloader
    also_reload '/rest/auth'
  end

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

我想将我的身份验证逻辑放在/rest/auth.rb中,如何在开发模式下重新加载/rest/auth.rb?我必须在每个控制器文件中放置配置块并要求sinatra/reloader吗?我希望我的控制器继承我的主类的设置.auth.rb中的代码如下:

class MyApp < Sinatra::Base
  set(:auth) do |*roles|  # <- notice the splat here
    condition do
      unless logged_in?
        session[:success_url] = request.path_info
        redirect '/'
      end
    end
  end

  def logged_in?
    current_user
  end

  def current_user
    if session[:user_id]
      u = User.find(:id=>"#{session[:user_id]}")
    else
      false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我需要重新启动服务器才能进行更改但我可以在auth.rb的配置块中抛出重新加载代码,尽管我不愿意.有任何想法吗?

ruby sinatra

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

sinatra应用程序中的会话在浏览器之间共享

我正在使用Sinatra框架来创建一个非常简单的Web应用程序,需要登录会话.

我可以登录很好,但当我的朋友访问该网站时,他们以我的身份登录.我有一个朋友注册.当我重新访问该网站时,我以她的身份登录!我们在不同的设备上相距3000英里.

这是我的登录代码的要点..

require 'rubygems'
require 'sinatra'

# I have tried enabling/disabling the :session_secret
# set :session_secret, 'my_secret' 
enable :sessions

before '*' do
  begin
    User.login(User.find(session[:me])) if session[:me]
  end
end

post '/login' do
  user = User.find_by_email!(params[:email]).authenticate!(params[:password])
  session[:me] = user.id
  User.login user
  200
end
Run Code Online (Sandbox Code Playgroud)

我也尝试将其添加到我的rackup文件中

use Rack::Session::Cookie, 
    :key => 'my_app_key',
    :path => '/',
    :expire_after => 14400, # seconds
    :secret => 'secret_stuff'
Run Code Online (Sandbox Code Playgroud)

问题出在生产和开发环境上.

Sinatra文档不建议除http://www.sinatrarb.com/faq.html#sessions之外的任何配置enable :sessions

ruby session web-applications sinatra

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

基于ruby的服务器的自适应映像

我想根据用户屏幕的大小向客户端发送图像,如果我有高分辨率图像,并且用户想要在移动设备上查看它我不想发送完整的高清图像,而是我想将缩小的图像发送到用户的设备维度,这将增加低带宽设备的加载速度

有一个解决方案在这里

自适应数字图像检测访问者的屏幕尺寸,并自动创建,高速缓存,并提供你的网页的嵌入式HTML images.It的设备进行适当的重新定标版本适用于采用自适应设计,并与液体结合使用图像技术.(来自给定的链接)

我看到这种为解决方案phpapache基于服务器的,是有其具有基于Ruby的服务器的Web应用程序的解决方案?一个gem可能是...谢谢

ruby rack ruby-on-rails sinatra responsive-design

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

Sinatra LoadError

在使用Sinatra应用程序时,我遇到了一个特殊的问题,希望有人可以帮助我.我正在运行ruby 1.9.3,当我运行我的应用程序时,ruby myapp.rb它在localhost上运行时出错.然而,当我尝试sudo ruby myapp.rb它时给了我一个错误,Sinatra无法加载,当它显示我从中拉出sinatra的库时,它是/usr/lib/ruby/1.9.1

我认为这就是我的问题,但我不知道如何改变这条道路.我可以在我的应用程序或终端中更改ruby的路径,任何帮助吗?

ruby path sinatra sinatra-assetpack

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

如何在Ruby控制器中加载凭据而不将其存储在文件中?

我正在使用Sinatra开发Twilio应用程序.由于我没有太多使用Ruby的经验(但我很兴奋地学习),我在将凭据与文件分离时遇到了问题.我想将文件上传到存储库,但我希望将敏感凭据保存在可导入的单独文件中.

该文件目前由以下部分组成:

require 'rubygems'
require 'twilio-ruby'

account_sid = "xxxxxx"
auth_token = "xxxxx"
client = Twilio::REST::Client.new account_sid, auth_token

from = "+12341231234"

friends = {
  "+1231231234" => "Lenny"
}
friends.each do |key, value|
  client.account.sms.messages.create(
    :from => from,
    :to => key,
    :body => "Hey #{value}, Monkey party at 6PM. Bring Bananas!"
  )
  puts "Sent message to.#{value}"
end
Run Code Online (Sandbox Code Playgroud)

如何正确加载account_sidauth_token行到单独的文件?存储此类凭据的最佳做法是什么?

ruby security rubygems ruby-on-rails sinatra

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