Sha256: 8e9bbdb014989fcfa4899553573cd9d1c422b6a8ae51a71cca61a468f9d92e59

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

$:.unshift File.expand_path('../../lib', __FILE__)
require 'signal'
require 'active_record'

ActiveRecord::Base.establish_connection({
  :adapter => 'sqlite3',
  :database => ':memory:'
})

ActiveRecord::Schema.define(:version => 0) do
  create_table :things do |t|
    t.string :name
    t.timestamps null: false
  end
end

class Thing < ActiveRecord::Base
  include Signal::ActiveRecord

  validates_presence_of :name
end

class MyListener
  [:validation, :update, :create, :remove].each do |type|
    class_eval <<-RUBY
      def before_#{type}(thing); puts __method__; end
      def on_#{type}(thing); puts __method__; end
      def after_#{type}(thing); puts __method__; end
    RUBY
  end
end

puts "\n=== Creating valid record"
thing = Thing.new(:name => 'Stuff')
thing.listeners << MyListener.new
thing.save

puts "\n=== Creating invalid record"
thing = Thing.new(:name => nil)
thing.listeners << MyListener.new
thing.save

puts "\n=== Updating valid record"
thing = Thing.create(:name => 'Stuff')
thing.listeners << MyListener.new
thing.update_attributes(:name => 'Updated stuff')

puts "\n=== Updating invalid record"
thing = Thing.create!(:name => 'Stuff')
thing.listeners << MyListener.new
thing.update_attributes(:name => nil)

puts "\n=== Removing record"
thing = Thing.create(:name => 'Stuff')
thing.listeners << MyListener.new
thing.destroy

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
signal-1.0.0 examples/chain.rb
signal-0.3.0 examples/chain.rb
signal-0.2.2 examples/chain.rb
signal-0.2.1 examples/chain.rb
signal-0.2.0 examples/chain.rb