小编Sea*_*ary的帖子

沉默工厂女孩伐木

为了清除空气,我不是一些残酷的工厂大师试图让工作的女士们沉默.我有一个非常讨厌的问题,当我在我的规范中使用Thoughtbot的工厂女孩​​时,每次使用Factory.create(:foo)时,新创建的ActiveRecord模型实例都会记录到控制台.这使得查看我的控制台输出更难以在视觉上过滤掉所有额外的日志记录.是否有某个设置或可以设置的标志会使这个额外的日志记录沉默?

下面是我的rspec输出的一个小例子.'.' 在每一行的开头,在这种情况下,是一个成功的测试.

loading autotest/rspec
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Library/Ruby/Gems/1.8/gems/rspec-1.2.9/bin/spec --autospec spec/publisher_spec.rb -O spec/spec.opts 
#<Event id: nil, oid: "mainEvent1", name: "Main Event", short_name: "mainevent", time_zone: "PST", created_at: nil, updated_at: nil, draft: true, draft_origin_id: nil, draft_deleted: false>
#<Event id: nil, oid: "mainEvent1", name: "Main Event", short_name: "mainevent", time_zone: "PST", created_at: "2009-11-18 19:11:56", updated_at: "2009-11-18 19:11:56", draft: true, draft_origin_id: 3, draft_deleted: false>
#<Event id: nil, oid: "bumbershoo", name: "Bumbershoot", short_name: "bumbershoot", time_zone: "PST", created_at: nil, updated_at: nil, draft: true, draft_origin_id: nil, draft_deleted: false>
#<Notification id: …
Run Code Online (Sandbox Code Playgroud)

ruby tdd rspec cucumber factory-bot

5
推荐指数
1
解决办法
731
查看次数

在模块中设置新的类变量

我有一个我一直在努力的插件,它将发布添加到ActiveRecord类.我和我的发布者一起扩展我的课程:

class Note < ActiveRecord::Base
  # ...
  publishable :related_attributes => [:taggings]
end
Run Code Online (Sandbox Code Playgroud)

我的发布商的结构如下:

module Publisher

  def self.included(base)
    base.send(:extend, ClassMethods)

    @@publishing_options = [] # does not seem to be available
  end

  module ClassMethods

    def publishable options={}
      include InstanceMethods

      @@publishing_options = options

      # does not work as class_variable_set is a private method
      # self.class_variable_set(:@@publishing_options, options)

      # results in: uninitialized class variable @@publishing_options in Publisher::ClassMethods
      puts "@@publishing_options: #{@@publishing_options.inspect}"

      # ...
    end

    # ...

  end

  module InstanceMethods

    # results in: uninitialized class variable @@publishing_options …
Run Code Online (Sandbox Code Playgroud)

ruby class-variables

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

将 ember-data 记录标记为现有

我有一个有点独特的情况,我为 ember-data 编写了一个缓存层,将记录序列化到本地存储。当我将缓存反序列化为我使用的 ember-data 模型时this.store.createRecord('model_name', cacheData);。我正在缓存的这些记录在服务器上具有现有值。这对我来说很有效,直到我想要save()记录为止。保存时认为该记录是一条新记录,即使它具有“id”属性。当save()调用时,会向我的应用程序服务器发出 POST 而不是 PUT。有谁知道如何将商店中的记录标记为非新记录。

ember.js ember-data

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

ActiveRecord - automatically merging model data as an aggregate

Lets say I have two tables.

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string    :type, :default => 'User'
      t.string    :user_name, :null => false
      t.boolean   :is_registered, :default => true
      # ... many more fields
    end
  end
end

class CreateContactInfo < ActiveRecord::Migration
  def self.up
    create_table :contact_info do |t|
      t.integer :resource_id
      t.string :resource_type
      t.string :first_name
      t.string :last_name
      t.string :middle_initial
      t.string :title
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

class ContactInfo < ActiveRecord::Base
  belongs_to :contactable, :polymorphic => true
end

class User < ActiveRecord::Base
  has_one :contact_info, …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails

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

禁用Ruby 1.9.x的YARV编译器

从命令行运行我的规范与ruby 1.9.x与1.8.7之间的应用程序启动时间有非常明显的差异.我的应用程序使用ruby 1.8.7比使用ruby 1.9.1或1.9.2更快地启动.应用程序启动差异大约为18秒.我的应用程序用1.8.7和1.9.2初始化需要大约5秒钟.

应用程序初始化时间对于生产来说不是什么大问题,但对于BDD开发来说这是一个非常大的问题.每次我更改代码并运行我的规范时,每次迭代我都要再等待18秒.

我假设这个应用程序初始化时间归因于我的应用程序初始化时YARV编译字节码.

我对YARV减慢应用程序初始化速度是否正确,是否有办法在命令行上禁用YARV.能够在我运行我的规格时禁用YARV会非常好.

ruby rspec yarv ruby-1.9

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