小编awe*_*ndt的帖子

使用 RSpec,描述中的常量是一个大禁忌吗?

我只是花了很长时间试图弄清楚为什么我的规范单独通过,但是当一起运行控制器和库测试时,某些规范神秘地失败了。罪魁祸首是这样的:

在一项规范中:

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 rspec rspec2

4
推荐指数
1
解决办法
1939
查看次数

如何在Heroku Cedar上为静态Rack站点启用gzip压缩?

在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

gzip rack heroku deflate cedar

4
推荐指数
1
解决办法
1958
查看次数

DigitalOcean的一键式应用程序是如何维护的?

DigitalOcean提供了大量的一键式应用程序.它们可帮助您使用预安装的软件创建Droplet.但我还没有找到任何关于它们的技术文档.

特别:

  • 谁维护这些应用程序?(社区可以帮助升级它们吗?)
  • 什么是创建这样的应用程序的工作流程?

digital-ocean

4
推荐指数
1
解决办法
606
查看次数

AJAX + Rails的当前最新技术是什么?

我很惊讶地看到Rails 3中的RJS.这是大多数rails网站使用AJAX的方式吗?

如果我正在使用Backbone(是一个很好的例子),它不会与ujs发生冲突吗?

javascript ruby jquery ruby-on-rails backbone.js

3
推荐指数
1
解决办法
185
查看次数

为什么 rspec-rails 跳过中间件?

我有一个 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 中间件?

rack rack-middleware rspec-rails ruby-on-rails-3

3
推荐指数
1
解决办法
2363
查看次数

从表中删除列后如何避免崩溃Rails应用程序?

问题

我刚刚了解到,我们当前在ActiveRecord迁移中删除列的做法是在实际删除列之前隐藏Rails列(通过丑陋的黑客,请参阅下面的详细信息).

这是因为Rails缓存了SHOW FULL FIELDS查询.如果我们不解决这个问题,那么(长时间运行的)迁移将删除该列,到那时,Rails将已经缓存了这些字段.迁移完成并且列消失后,应用程序将随后崩溃,因为INSERTs将因缓存而为不存在的列提供值.

使用clear_table_cache!迁移中的内容是没有用的,因为我们部署到N个服务器并仅在其中一个服务器上运行迁移.这将清除其中一个服务器上的缓存,但不是全部.

我们当前的解决方案(又名丑陋的黑客)

我们目前正在做的是覆盖ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#columns初始化程序并在运行迁移之前进行部署.

迁移完成后,我们删除重写的初始化程序并再次部署.

在这一点上,我无法相信我们是唯一遇到这个问题并且必须解决它的人.这个问题还有其他解决办法吗?

activerecord caching ruby-on-rails

3
推荐指数
1
解决办法
1161
查看次数

为什么在Twitter Bootstrap的前置图标和输入字段之间有空格?

使用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.示例显示图标和输入字段之间没有这样的空格.我怎么摆脱它?

css markup twitter-bootstrap

2
推荐指数
1
解决办法
2096
查看次数

在rails中,我可以在没有EDIT操作的情况下修改记录吗?

我有一个邮政路线"投票",它是"文章"资源的成员,如下所示:

 resources :articles do
  member do
   post 'vote'
  end
 end
Run Code Online (Sandbox Code Playgroud)

我想检查用户是否"喜欢"文章,然后他点击"DISLIKE",我将根据发送的参数修改记录.如果没有"编辑/更新"操作,我可以通过找到该记录并对其进行修改来实现吗?

ruby ruby-on-rails ruby-on-rails-4

2
推荐指数
1
解决办法
420
查看次数

Rails升级:assign_attributes的参数数量错误(2表示1)

嗨我已经从rails 3.2.12升级到4.0.0大多数人认为现在工作正常,但是我收到了这个错误:

在此输入图像描述

在这种情况下是什么问题?

ruby ruby-on-rails ruby-on-rails-4

0
推荐指数
1
解决办法
446
查看次数