我无法弄清楚如何让spork不加载我的所有app模型.我的模型的测试变化大大减慢,因为我无法使用spork来帮助.这是我在调试spork正在加载时得到的结果:
- Spork Diagnosis - -- Summary -- app/models/account.rb app/models/admin.rb app/models/affiliate.rb app/models/app.rb app/models/application_server.rb app/models/domain_record.rb app/models/domain_zone.rb app/models/event.rb app/models/oid.rb app/models/user.rb config/application.rb config/boot.rb config/environment.rb config/environments/test.rb config/initializers/api_conversions.rb config/initializers/backtrace_silencers.rb config/initializers/compass.rb config/initializers/devise.rb config/initializers/hoptoad.rb config/initializers/inflections.rb config/initializers/mime_types.rb config/initializers/rspec_generator.rb config/initializers/secret_token.rb config/initializers/session_store.rb config/routes.rb lib/application_server_api.rb lib/oid_helper.rb lib/soa_record.rb spec/spec_helper.rb -- Detail -- --- app/models/account.rb --- /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `block in require' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:227:in `load_dependency' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:346:in `require_or_load' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:300:in `depend_on' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:216:in `require_dependency' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.7/lib/rails/mongoid.rb:54:in `load_model' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.7/lib/rails/mongoid.rb:17:in `block (2 levels) in load_models' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.7/lib/rails/mongoid.rb:16:in `each' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.7/lib/rails/mongoid.rb:16:in `block in load_models' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/paths.rb:102:in `block in each' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/paths.rb:102:in `each' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/paths.rb:102:in `each' /Users/sean/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.7/lib/rails/mongoid.rb:15:in …
我正在使用postgresql使用现有的rails应用程序.它的schema.rb文件包含id: :serial
许多(但不是全部)表:
create_table "foos", id: :serial, force: :cascade do |t|
Run Code Online (Sandbox Code Playgroud)
当我跑rails db:migrate:reset
,id: :serial
被删除.我们都是相同版本的postgres,但不同的操作系统.我没有详尽地测试机器之间的行为,但我认为机器之间存在差异.
rails版本与项目启动时的版本相同.
该项目确实以sqlite3开头.当我切换到那个并重新生成文件时,行为相同.
什么可能导致在我的环境中删除此选项?
这里有一些可能相关的代码:
更新
rails db:migrate:reset
同事的机器,我错了!他们的环境也会删除id: :serial
.id: :serial
在schema.rb中创建.制作一个自己的自定义异常时
class ThingExploded < StandardError; end
class ThingIsMissing < StandardError; end
Run Code Online (Sandbox Code Playgroud)
保存这些的好地方在哪里?我正在考虑lib/exceptions.rb ...并且还在考虑是否更适合以某种方式使它们更接近使用它们的代码.
我想告诉ruby一切都是utf8,除非另有说明,所以我不必在任何地方放置这些# encoding: utf-8
评论.
假设我的主分支(devlop)和我的功能分支都有活跃的开发.两者都在不断添加迁移.在将功能分支合并到主分支之前,我将把它重新绑定到主分支上.
因此,在最近的开发分支迁移之后,所有功能分支迁移才有意义.
有没有方便/建议的方法来重命名这些文件?我可以生成虚拟迁移并重用为它们生成的时间戳 - 但我想知道是否有一个我不了解的最佳/常见做法?
为什么不URI.escape
逃避单引号?
URI.escape("foo'bar\" baz")
=> "foo'bar%22%20baz"
Run Code Online (Sandbox Code Playgroud) 默认情况下,单击鼠标中键将在新选项卡中打开链接.
有些网站最终破坏了这一功能.中键单击最终与左键单击相同.
为什么会这样?是因为他们为点击事件编程功能,并且错误地将其应用于所有点击而不是仅仅点击左键?
通过明确地给中间点击行为解决了问题吗?或者通过使现有的点击行为代码更加狭窄地应用?
javascript mouse mouseevent mouseclick-event jquery-click-event
我有这个ruby脚本来管理que进程.que不支持多进程,请参见此处的讨论):
#!/usr/bin/env ruby
cluster_size = 2
puts "starting Que cluster with #{cluster_size} workers"; STDOUT.flush
%w[INT TERM].each do |signal|
trap(signal) do
@pids.each{|pid| Process.kill(signal, pid) }
end
end
@pids = []
cluster_size.to_i.times do |n|
puts "Starting Que daemon #{n}"; STDOUT.flush
@pids << Process.spawn("que --worker-count $MAX_THREADS")
end
Process.waitall
puts "Que cluster has shut down"; STDOUT.flush
Run Code Online (Sandbox Code Playgroud)
该脚本已经运行了几个月.有一天,我发现脚本正在运行的状态,但两个子进程都已经死了.
我试图复制这个实验.我用各种信号杀死了孩子,让他们提出异常.在所有情况下,脚本都知道该过程已经死亡并且本身已经死亡.
如果没有父母的脚本知道,孩子的过程怎么会死?
我需要在我的应用程序中的所有路由上强制使用SSL,除了landing#index
.
在config/application.rb
,我有:
config.force_ssl = true
Run Code Online (Sandbox Code Playgroud)
然后landing_controller.rb
,我有:
force_ssl :except => :index
Run Code Online (Sandbox Code Playgroud)
但是,所有路由仍然被重定向到https
.
有谁知道如何在Rails 3.1+应用程序中有条件地强制SSL?
解:
将以下内容添加到您的Gemfile
:
gem 'rack-ssl-enforcer'
Run Code Online (Sandbox Code Playgroud)
将以下内容添加到您的config/application.rb
:
config.middleware.use Rack::SslEnforcer, :except => [ /\/$/ ], :strict => true
Run Code Online (Sandbox Code Playgroud)