我只是花了很长时间试图弄清楚为什么我的规范单独通过,但是当一起运行控制器和库测试时,某些规范神秘地失败了。罪魁祸首是这样的:
在一项规范中:
describe SomeThing do
CONSTANT_VALUE = "a value"
# ... examples etc ...
end
Run Code Online (Sandbox Code Playgroud)
在另一篇文章中:
describe AnotherThing do
CONSTANT_VALUE = "a different value"
# ... the rest is history
end
Run Code Online (Sandbox Code Playgroud)
我分配给这些常量的值在我的规格之间泄漏并导致意外的行为。我应该使用let块来定义常量等吗?或者是其他东西?
在Ruby with Rack文章中创建静态站点之后,我在Heroku上获得了一个静态站点,config.ru其内容如下所示:
use Rack::Static,
:urls => ["/images", "/js", "/css"],
:root => "public"
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
Run Code Online (Sandbox Code Playgroud)
当我在结果上运行YSlow时,它报告没有文件被gzip压缩.如何压缩资产和public/index.html?
DigitalOcean提供了大量的一键式应用程序.它们可帮助您使用预安装的软件创建Droplet.但我还没有找到任何关于它们的技术文档.
特别:
我很惊讶地看到Rails 3中的RJS.这是大多数rails网站使用AJAX的方式吗?
如果我正在使用Backbone(这是一个很好的例子),它不会与ujs发生冲突吗?
我有一个 Rails 应用程序 (3.2.12),我想通过 HTTP Accept-Language 标头添加区域设置切换。
我为实现这一目标所做的事情:
我将rack-contrib添加到我的Gemfile中:
gem 'rack-contrib', require: 'rack/contrib'
Run Code Online (Sandbox Code Playgroud)
ran bundle install,将中间件添加到 my config/application.rb:
config.middleware.use Rack::Locale
Run Code Online (Sandbox Code Playgroud)
并检查我的控制器的请求环境:
puts request.env.keys.select{|v| v=~/rack/ }
Run Code Online (Sandbox Code Playgroud)
我运行的规范是控制器规范,它包含render_views在其中。
我的问题:
rack.locale请求环境中没有键。我仔细检查了一下rake middlware,它列Rack::Locale在最后,就在之前run MyApp::Application.routes。
经过一些调试后,我发现运行时从未调用中间件
rspec spec/controllers/authentication_controller_spec.rb
Run Code Online (Sandbox Code Playgroud)
但是:运行相同的代码script/rails s thin可以在请求环境中提供更多键,即:
rack.request.cookie_string
rack.locale
rack.request.query_string
rack.request.query_hash
Run Code Online (Sandbox Code Playgroud)
所以,我想问题是:为什么 RSpec 拒绝选择 Rack 中间件?
我刚刚了解到,我们当前在ActiveRecord迁移中删除列的做法是在实际删除列之前隐藏Rails列(通过丑陋的黑客,请参阅下面的详细信息).
这是因为Rails缓存了SHOW FULL FIELDS查询.如果我们不解决这个问题,那么(长时间运行的)迁移将删除该列,到那时,Rails将已经缓存了这些字段.迁移完成并且列消失后,应用程序将随后崩溃,因为INSERTs将因缓存而为不存在的列提供值.
使用clear_table_cache!迁移中的内容是没有用的,因为我们部署到N个服务器并仅在其中一个服务器上运行迁移.这将清除其中一个服务器上的缓存,但不是全部.
我们目前正在做的是覆盖ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#columns初始化程序并在运行迁移之前进行部署.
迁移完成后,我们删除重写的初始化程序并再次部署.
在这一点上,我无法相信我们是唯一遇到这个问题并且必须解决它的人.这个问题还有其他解决办法吗?
使用Twitter的Bootstrap,我有一个带有输入字段和前置图标的表单:
<div class="input-prepend">
<label for="some_name">What's your ...</label>
<span class="add-on"><i class="icon-road"></i></span>
<input type="text" class="span2" name="some[name]" id="some_name"/>
</div>
Run Code Online (Sandbox Code Playgroud)
这就是结果:

我还没有改变Bootstrap的CSS.示例显示图标和输入字段之间没有这样的空格.我怎么摆脱它?
我有一个邮政路线"投票",它是"文章"资源的成员,如下所示:
resources :articles do
member do
post 'vote'
end
end
Run Code Online (Sandbox Code Playgroud)
我想检查用户是否"喜欢"文章,然后他点击"DISLIKE",我将根据发送的参数修改记录.如果没有"编辑/更新"操作,我可以通过找到该记录并对其进行修改来实现吗?
嗨我已经从rails 3.2.12升级到4.0.0大多数人认为现在工作正常,但是我收到了这个错误:

在这种情况下是什么问题?
ruby ×4
rack ×2
activerecord ×1
backbone.js ×1
caching ×1
cedar ×1
css ×1
deflate ×1
gzip ×1
heroku ×1
javascript ×1
jquery ×1
markup ×1
rspec ×1
rspec-rails ×1
rspec2 ×1