检查ActiveRecord,DataMapper,续集:有些使用全局变量(静态变量),有些需要在使用模型加载源文件之前打开数据库连接.什么ORM更适合在使用不同数据库的sinatra应用程序中使用.
我想下载http://foobar.com/song.mp3作为song.mp3,而不必铬在其本地打开它<audio>在浏览器中播放.
我怎么能这样做呢?
我有一个使用Sinatra构建的简单Web应用程序,并启用了会话。
如果我理解正确,则会话数据存储在编码的cookie中。随着会话数据的更改,cookie的值也将更改。
我需要一个唯一的会话标识符,在整个会话过程中保持不变。是否有这样的标识符。还是我必须创建自己的独特价值并将其自己存储在会话中?
谢谢!
编辑:在下面的评论中,我想到了一个有用的比较。如果我有一个Java servlet,我将使用JSESSIONID作为唯一标识符。我需要一个等效于JSESSIONID的Sinatra。
这是我第一次与Sinatra合作,我无法在测试中使用会话.我有enable :sessions我的应用程序.
我试过了:
get "/controller/something", {}, "rack.session" => {:session => "Aa"}
Run Code Online (Sandbox Code Playgroud)
要么
get "/controller/something", {}, "session" => {:session => "Aa"}
Run Code Online (Sandbox Code Playgroud)
但是我的请求中没有设置会话变量.我环顾网络并尝试了几个建议,但似乎没有任何效果.我错过了什么吗?
谢谢!
我有控制器
app/controllers/posts.rb
Run Code Online (Sandbox Code Playgroud)
我如何使用管理员布局
admin/views/layouts/application.haml
Run Code Online (Sandbox Code Playgroud)
?
我有一个非常简单的应用程序托管在EC2上使用Sinatra构建,在nginx背后提供服务.问题是,使用Chrome,会话变量在Sinatra中"丢失".它不会发生在Firefox中.
这是使用Rack :: Session :: Cookie.这与此问题类似:Sinatra不会在Chrome上使用重定向来保持会话
任何有关如何在Chrome中解决此问题的见解将不胜感激.
目前运行一个简单的sinatra应用程序,使用乘客,并使用pgbouncer连接池到与应用程序在同一服务器上的数据库.目前我间歇性地得到PG错误,准备好的声明"a\d"不存在.
A PG::Error occurred in #: ERROR: prepared statement "a2" does not exist
在错误之前执行的ruby代码
def self.get_ownership_record(id, key)
self.where("user_id=? AND key=?", id, key ).first
end
pgbouncer配置
; ######################################################### ; ############# SECTION HEADER [DATABASES] ################ ; ######################################################### [databases] fakedatabase=fake [pgbouncer] ; ----- Generic Settings -------------------------- ; ------------------------------------------------- logfile=/opt/local/var/log/pgbouncer/pgbouncer.log pidfile=/opt/local/var/run/pgbouncer/pgbouncer.pid listen_addr=* listen_port=5444 ; unix_socket_dir=/tmp user=_webuser auth_file=/Users/Shared/data/global/pg_auth auth_type=trust pool_mode=transaction ; max_client_conn=100 ; default_pool_size=20 ; reserve_pool_size=0 ; reserve_pool_timeout=5 ; server_round_robin=0 ; ----- Log Settings ------------------------------ ; ------------------------------------------------- ; syslog=0 ; syslog_ident=pgbouncer ; syslog_facility=daemon ; log_connections=1 …
Sinatra新手; 我正在运行一些rspec测试,但在日志中收到了一堆不必要的噪音.如何摆脱日志中的过度噪音?我已经仔细检查过环境设置为:test,这意味着记录器级别应该设置为WARN而不是DEBUG.
spec_helper:
require "./app"
require "sinatra"
require "rspec"
require "rack/test"
require "database_cleaner"
require "factory_girl"
set :environment, :test
FactoryGirl.definition_file_paths = %w{./factories ./test/factories ./spec/factories}
FactoryGirl.find_definitions
RSpec.configure do |config|
config.include Rack::Test::Methods
config.include FactoryGirl::Syntax::Methods
# Use color in STDOUT
config.color_enabled = true
# Use color not only in STDOUT but also in pagers and files
config.tty = true
# Use the specified formatter
config.formatter = :documentation # :progress, :html, :textmate
config.order = "random"
config.before(:suite) do
DatabaseCleaner.clean_with(:deletion)
end
config.before(:each) do
DatabaseCleaner.strategy = :deletion
end …Run Code Online (Sandbox Code Playgroud) 我正在将ActiveRecord与Sinatra和PostgreSQL一起使用。当数据库连接断开(由于临时网络故障或postgres服务器重新启动)时,我的应用程序不会自动重新获得连接。我必须重新启动应用程序才能再次连接到postgres。我记得当我在另一个项目中使用Rails时,我没有遇到这个问题。
我需要输入一些配置或代码来告诉ActiveRecord自动重新连接到PostgreSQL吗?
我正在为Sinatra应用编写测试,该应用通过gem从API接收输入。收到API响应后,我需要测试模板是否正确呈现。API的响应将是我正在加载的页面的HTML。
我的第一个直觉是编写一个如下所示的测试:
describe 'the root path'
it 'should render the index view' do
get '/'
expect(last_response).to render_template(:index)
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试这样做时,出现以下错误: undefined method `render_template'
我想知道是否有人遇到过这个问题-似乎应该很容易解决,但是我似乎找不到任何文档来解决这个问题。