Tag: 西纳特拉

如何更改Sinatra中的日志级别

我正在使用此代码启用我的Sinatra应用程序中的日志记录: log_file = File.new(‘my_log_file.log’, “a”) $stdout.reopen(log_file) $stderr.reopen(log_file) $stdout.sync=true $stderr.sync=true 实际记录使用以下方式完成: logger.debug(“Starting call. Params = #{params.inspect}”) 事实certificate,只记录INFO或更高级别的日志消息,并且不记录DEBUG消息。 我正在寻找一种方法来设置日志级别为DEBUG。

Ruby Sequel模块中的事务:如何获取DB对象?

我正在使用Sequel在Sinatra应用程序中工作。 我想做一个事务,根据我必须使用DB对象的手册,我怎样才能从我的代码的任何部分获取这个对象?

ruby中的数据库连接池

我刚开始使用Ruby,我正在玩Sinatra,但找不到在请求之间共享数据库连接的方法。 我来自Java web developpement,你要做的基本事情之一是汇集数据库连接,所以我确信Ruby中存在类似的东西,但我找不到它。 ActiveRecord和DataMapper提供此function,但我不需要ORM,只想进行常规SQL查询。 Sinatra是否有一些特定的方法,或者所有基于Rack的应用程序都有通用的方法?

为什么Mail阻止看不到我的变量?

我是Ruby的新手,想知道为什么我在这种情况下使用简单的Sinatra应用程序中的’mail’gem获得错误: post “/email/send” do @recipient = params[:email] Mail.deliver do to @recipient # throws error as this is undefined from ‘server@domain.com’ subject ‘testing sendmail’ body ‘testing sendmail’ end erb :email_sent end 然而,这工作正常: post “/email/send” do Mail.deliver do to ‘me@domain.com’ from ‘server@domain.com’ subject ‘testing sendmail’ body ‘testing sendmail’ end erb :email_sent end 我怀疑这与块范围和我对它的误解有关。

在端口80上运行Sinatra

我安装了Sinatra并且它可以工作,但它默认使用端口4567。 我希望它在端口80上运行。 为了让它在端口80上工作,我尝试了这个: require ‘rubygems’ require ‘rack/handler/webrick’ require ‘sinatra’ Sinatra::Application.default_options.merge!( :run => false, :env => :production, :port => 80 ) get ‘/’ do “Hello World” end 但我得到这个错误: $ ruby -rubygems index.rb index.rb:5:in `’: undefined method `default_options’ for Sinatra::Application:Class (NoMethodError) 知道发生了什么事吗?

你能指定用于Sinatra重定向的HTTP方法吗?

我有这样的事情: post “/login” do end get “/login” do end post “/register” do … redirect “/login” # I would like to redirect to get “/login” instead of post “login” end 我可以告诉sinatra我想使用get,而不是隐含地选择“post”吗?

不使用端口时使用的端口

我正在尝试运行以下Sinatra应用程序并收到一条错误消息,告诉我无法启动服务器,因为端口已经在使用或因为我没有root权限。 在启动Sinatra应用程序之前,我从未遇到过这个问题。 我几天前更新了Mountain Lion以获取我的mac,并想知道这是否可能是问题的原因。 我也使用RVM。 任何人都可以提出建议…… require “sinatra” class MyApp > 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) 更新:我仍然可以在我的机器上运行rails服务器,所以我认为问题是针对Sinatra的。 此外,几天前,当我开始使用这个指导我明确设置端口的Rack Tutorial时,我能够很好地运行Sinatra应用程序。 我想知道这是否会永久改变。 >> Rack::Handler::WEBrick.run my_rack_proc, :Port => 9876 [2011-10-24 11:32:21] […]

如何在另一个Sinatra应用程序中安装Sinatra应用程序?

我正在尝试编写一个将组件组合在一起的Sinatra应用程序(有点像控制器)。 所以对于“博客”相关的东西,我想要一个名为Blog的应用程序安装在/blog 。 Blog应用程序中包含的所有路由都与其安装的路径相关,因此我可以简单地定义index路径,而无需在路径中指定装载路径。 我最初通过使用config.ru文件并将路由map到不同的应用程序来处理此问题。 我遇到的问题是,我使用的是各种需要包含在所有应用程序中的各种sinatra gems / extensions / helper,因此有很多重复的代码。 如何在另一个应用程序中安装一个sinatra应用程序,以便应用程序中定义的路径相对于应用程序的安装位置? 如果这不可能是开箱即用的,你能否展示一个如何做到这一点的代码示例? 这是一个简单的例子: class App mount Blog, at: ‘/blog’ mount Foo, at: ‘/bar’ end class Blog get ‘/’ do # index action end end class Foo get ‘/’ do # index action end end

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

%a{:href => “/new_game?human_is_first=true”, :remote => “true”} %span Yes 以上是我的链接。 只是想知道如何处理这个问题。 我需要能够执行一些JavaScript。 下面是我使用rails时的.js.erb文件。 $(‘.welcome_container’).fadeOut(500, function(){ $( ‘.shell’ ).html( ” “board/board” ) ) %>” ); $(‘.board_container’).fadeIn(500); }); 所以,我的问题是,在app.rb中调用Once / new_game,我希望能够将一些javascript发送到当前页面(不离开页面,并进行部分渲染)

Sinatra服务器推?

将数据从Sinatra编写的服务器推送到客户端的最佳方法是什么? 想象一下聊天室,但没有Ajax轮询每2500ms。 我知道Rails中的Juggernaut,但对Sinatra很好奇。