我不知道这是一个红宝石问题还是一个Sinatra问题,因为我对两者都不熟悉.以下代码不起作用,我理解为什么,因为第一个my_variable是其块的本地.我只是不知道正确的语法.
require 'rubygems'
require 'sinatra'
configure do
my_variable = "world"
end
get '/' do
"Hello " + my_variable
end
Run Code Online (Sandbox Code Playgroud)
EDIT1 - 以下工作,但我想我对配置块的正确用途感到困惑.
require 'rubygems'
require 'sinatra'
my_variable = "world"
get '/' do
"Hello " + my_variable
end
Run Code Online (Sandbox Code Playgroud) 我有一个小的Sinatra应用程序,它从ERB模板为我生成html片段.
我如何html_escape输出?
Sinatra中不存在<%= h somestring%>帮助器.
我来自Ruby/Rails世界.我正在Sinatra项目上进行测试(使用Rack :: Test).我通常在测试中使用Fixtures.Sinatra有相同的东西吗?
人们如何设置他们的Sinatra测试套件(在基本的helloworld示例之外,这是我能为Sinatra测试找到的唯一例子).
谢谢!
我有一个我在Heroku上运行的小型Sinatra应用程序,它使用单个管理员密码,以及一些API身份验证密钥.
哪里是存放这些东西的最佳地点?我是否将它们放在环境变量中,然后使用
heroku config:add ADMIN_PASSWORD=foobar
Run Code Online (Sandbox Code Playgroud)
?或者我使用包含它们的配置文件,我只是不提交配置文件?
response = Typhoeus::Request.get("http://localhost:3000/api/api_email/#{@api_id}.json")
JSON.parse(response.body)
Run Code Online (Sandbox Code Playgroud)
响应是一个JSON对象,但在尝试解析它时出错.
undefined method `bytesize' for
Run Code Online (Sandbox Code Playgroud)
我想访问JSON对象.
错误:
NoMethodError at /api/v1/a71040739d6cc50e89aff56601af67/2011-10-1
undefined method `bytesize' for {"xpto"=>{"email
"=>"test@gmail.com"}}:Hash
file: utils.rb location: bytesize line: 239
Run Code Online (Sandbox Code Playgroud)
回溯:
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/httpserver.rb in service
si.service(req, res)
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/httpserver.rb in run
server.service(req, res)
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/server.rb in block in start_thread
block ? block.call(sock) : run(sock)
Run Code Online (Sandbox Code Playgroud)
这是如何生成的:
@api_id = params[:api_id]
@bucket = Bucket.where(:api => @api_id)
respond_with(@bucket, :only => [:email])
Run Code Online (Sandbox Code Playgroud)
返回的.json文件包含:
[{"xpto":{"email":"test@gmail.com"}}]
Run Code Online (Sandbox Code Playgroud) 我有一个Sinatra :: Base webservice,我想从命令行Ruby程序开始,所以我有这个:
# command line program file
require 'mymodule/server'
puts "Running on 0.0.0.0:4567, debugging to STDOUT..."
MyModule::Server.run! bind: '0.0.0.0', port: 4567, environment: :production
Run Code Online (Sandbox Code Playgroud)
这按预期工作但它抛出:
$ myscript
Running on 0.0.0.0:4567, debugging to STDOUT...
== Sinatra/1.3.1 has taken the stage on 4567 for production with backup from Thin
>> Thin web server (v1.3.1 codename Triple Espresso)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop
127.0.0.1 - - [23/Dec/2011 18:44:55] "POST /images HTTP/1.1" 200 360 0.0133 …Run Code Online (Sandbox Code Playgroud) require 'sinatra/base'
class Foo < Sinatra::Base
get('/foo') { 'foo' }
end
class Bar < Sinatra::Base
get('/bar') { 'bar' }
end
run Rack::Cascade, [Foo, Bar]
Run Code Online (Sandbox Code Playgroud)
我猜不出这段代码有什么问题.当我运行:ruby server.rb时,它会抛出一个错误
我刚开始使用Ruby,我正在玩Sinatra,但找不到在请求之间共享数据库连接的方法.
我来自Java web developpement,你要做的一件事就是集中数据库连接,所以我确信Ruby中存在类似的东西,但我找不到它.
ActiveRecord和DataMapper提供此功能,但我不需要ORM,只想进行常规SQL查询.
Sinatra是否有一些特定的方法,或者所有基于Rack的应用程序都有通用的方法?
我正在尝试运行以下Sinatra应用程序并收到一条错误消息,告诉我无法启动服务器,因为端口已经在使用或因为我没有root权限.在启动Sinatra应用程序之前,我从未遇到过这个问题.几天前我更新了Mountain Lion以获取我的mac,并想知道这可能是导致问题的原因.我也使用RVM.任何人都可以提出建议......
require "sinatra"
class MyApp < Sinatra::Base
get '/' do
"Hello from MyApp"
end
end
== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop
/Users/me/.rvm/gems/ruby-1.9.2-p290@global/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
Run Code Online (Sandbox Code Playgroud)
更新:我仍然可以在我的机器上运行rails服务器,所以我认为问题是针对Sinatra的.此外,几天前,当我开始使用这个指导我明确设置端口的Rack Tutorial时,我能够运行Sinatra应用程序 .我想知道这是否会永久改变.
>> Rack::Handler::WEBrick.run my_rack_proc, :Port => 9876
[2011-10-24 11:32:21] INFO WEBrick 1.3.1
[2011-10-24 …Run Code Online (Sandbox Code Playgroud) 我是Ruby和Active Record的新手.我正在尝试使用以下命令运行我的第一次迁移:
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我一直收到这个错误:
NameError:未初始化的常量ActiveRecord :: Migrator :: Zlib.
我尝试过不同的项目,所有迁移都会出现此错误.