小编Joh*_*hir的帖子

Spork.prefork正在加载app/models/*

我无法弄清楚如何让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 …

ruby rspec spork rspec2

13
推荐指数
3
解决办法
5368
查看次数

是什么决定了rails在表定义中是否包含id :: serial?

我正在使用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中创建.

postgresql ruby-on-rails rails-migrations

13
推荐指数
2
解决办法
1437
查看次数

什么是在rails项目中保留自定义异常定义的传统位置?

制作一个自己的自定义异常时

class ThingExploded < StandardError; end
class ThingIsMissing < StandardError; end
Run Code Online (Sandbox Code Playgroud)

保存这些的好地方在哪里?我正在考虑lib/exceptions.rb ...并且还在考虑是否更适合以某种方式使它们更接近使用它们的代码.

ruby ruby-on-rails exception

12
推荐指数
3
解决办法
5155
查看次数

为ruby 1.9设置全局默认编码

我想告诉ruby一切都是utf8,除非另有说明,所以我不必在任何地方放置这些# encoding: utf-8评论.

ruby encoding ruby-1.9

12
推荐指数
2
解决办法
8995
查看次数

更新功能分支中的迁移时间戳

假设我的主分支(devlop)和我的功能分支都有活跃的开发.两者都在不断添加迁移.在将功能分支合并到主分支之前,我将把它重新绑定到主分支上.

因此,在最近的开发分支迁移之后,所有功能分支迁移才有意义.

有没有方便/建议的方法来重命名这些文件?我可以生成虚拟迁移并重用为它们生成的时间戳 - 但我想知道是否有一个我不了解的最佳/常见做法?

git ruby-on-rails rails-migrations git-flow

12
推荐指数
1
解决办法
1742
查看次数

为什么URI.escape不能单引号?

为什么不URI.escape逃避单引号?

URI.escape("foo'bar\" baz")
=> "foo'bar%22%20baz"
Run Code Online (Sandbox Code Playgroud)

ruby url uri

12
推荐指数
1
解决办法
4123
查看次数

如何使用ruby更新一批S3对象的元数据?

我需要在S3上的数百或数千个对象上更改一些元数据(Content-Type).用红宝石做这件事的好方法是什么?据我所知,无法仅使用fog.io保存元数据,必须重新保存整个对象.似乎使用官方的sdk库需要我为这一项任务滚动一个包装器环境.

ruby amazon-s3 fog

12
推荐指数
2
解决办法
4314
查看次数

网站如何最终打破中间点击功能?

默认情况下,单击鼠标中键将在新选项卡中打开链接.

有些网站最终破坏了这一功能.中键单击最终与左键单击相同.

为什么会这样?是因为他们为点击事件编程功能,并且错误地将其应用于所有点击而不是仅仅点击左键?

通过明确地给中间点击行为解决了问题吗?或者通过使现有的点击行为代码更加狭窄地应用?

javascript mouse mouseevent mouseclick-event jquery-click-event

12
推荐指数
1
解决办法
1914
查看次数

过程如何以Process.wait不会注意到的方式死亡?

我有这个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)

该脚本已经运行了几个月.有一天,我发现脚本正在运行的状态,但两个子进程都已经死了.

我试图复制这个实验.我用各种信号杀死了孩子,让他们提出异常.在所有情况下,脚本都知道该过程已经死亡并且本身已经死亡.

如果没有父母的脚本知道,孩子的过程怎么会死?

ruby signals process

12
推荐指数
1
解决办法
336
查看次数

在Rails 3.1中强制SSL用于特定路由

我需要在我的应用程序中的所有路由上强制使用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)

ruby ssl ruby-on-rails ruby-on-rails-3.1

11
推荐指数
2
解决办法
9969
查看次数