我使用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接收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) 我想设置一个简单的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) 我一直是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建立连接.有人可以指导我.
非常感谢!
今天我想在Heroku的Sinatra应用程序中安装Twitter Bootstrap.不幸的是,存在一些显示问题:导航栏是白色而不是黑暗,并且内容的放置不正确.
我使用www.bootstrapcdn.com上的Bootstrap版本.我的应用程序在这里:http://sultry-depths-9340.herokuapp.com/这是我的layout.haml:http://pastebin.com/zWQ6H5st
谢谢
嗨,如果我有一个'主'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的配置块中抛出重新加载代码,尽管我不愿意.有任何想法吗?
我正在使用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
我想根据用户屏幕的大小向客户端发送图像,如果我有高分辨率图像,并且用户想要在移动设备上查看它我不想发送完整的高清图像,而是我想将缩小的图像发送到用户的设备维度,这将增加低带宽设备的加载速度
有一个解决方案在这里
自适应数字图像检测访问者的屏幕尺寸,并自动创建,高速缓存,并提供你的网页的嵌入式HTML images.It的设备进行适当的重新定标版本适用于采用自适应设计,并与液体结合使用图像技术.(来自给定的链接)
我看到这种为解决方案php和apache基于服务器的,是有其具有基于Ruby的服务器的Web应用程序的解决方案?一个gem可能是...谢谢
在使用Sinatra应用程序时,我遇到了一个特殊的问题,希望有人可以帮助我.我正在运行ruby 1.9.3,当我运行我的应用程序时,ruby myapp.rb它在localhost上运行时出错.然而,当我尝试sudo ruby myapp.rb它时给了我一个错误,Sinatra无法加载,当它显示我从中拉出sinatra的库时,它是/usr/lib/ruby/1.9.1
我认为这就是我的问题,但我不知道如何改变这条道路.我可以在我的应用程序或终端中更改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_sid和auth_token行到单独的文件?存储此类凭据的最佳做法是什么?