fulcrum_cloudfuji 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,51 @@
1
+ class CloudfujiStoryObserver < ActiveRecord::Observer
2
+ observe :story
3
+
4
+ def after_create(story)
5
+ return unless ::Cloudfuji::Platform.on_cloudfuji?
6
+
7
+ event = {
8
+ :category => :project_task,
9
+ :name => :created,
10
+ :data => event_data_for_story(story)
11
+ }
12
+
13
+ puts "Publishing Cloudfuji Event: #{event.inspect}"
14
+ ::Cloudfuji::Event.publish(event)
15
+ end
16
+
17
+ def after_update(story)
18
+ return unless ::Cloudfuji::Platform.on_cloudfuji?
19
+
20
+ event = {
21
+ :category => :project_task,
22
+ :name => :updated,
23
+ :data => event_data_for_story(story)
24
+ }
25
+
26
+ puts "Publishing Cloudfuji Event: #{event.inspect}"
27
+ ::Cloudfuji::Event.publish(event)
28
+ end
29
+
30
+
31
+ private
32
+
33
+ def event_data_for_story(story)
34
+ project_url = Rails.application.routes.url_helpers.project_url(story.project, :host => ENV['CLOUDFUJI_DOMAIN'])
35
+ {
36
+ :ido_id => story.ido_id,
37
+ :title => story.title,
38
+ :description => story.description,
39
+ :estimate => story.estimate,
40
+ :task_type => story.story_type,
41
+ :state => story.state,
42
+ :accepted_at => story.accepted_at,
43
+ :owned_by_id => story.owned_by && story.owned_by.ido_id,
44
+ :requested_by_id => story.requested_by && story.requested_by.ido_id,
45
+ :project_id => story.project.ido_id,
46
+ :labels => story.labels,
47
+ :url => project_url
48
+ }
49
+ end
50
+ end
51
+
@@ -12,7 +12,8 @@ Gem::Specification.new do |s|
12
12
  s.files = `git ls-files`.split("\n")
13
13
  s.version = Fulcrum::Cloudfuji::VERSION
14
14
 
15
- s.add_dependency 'cloudfuji', '>= 0.0.42'
15
+ s.add_dependency 'cloudfuji', '>= 0.0.44'
16
16
  s.add_dependency 'devise_cloudfuji_authenticatable'
17
+ s.add_dependency 'uuid'
17
18
 
18
19
  end
@@ -55,6 +55,10 @@ module Fulcrum
55
55
  Project.class_eval do
56
56
  after_create :add_all_users!
57
57
 
58
+ validates_presence_of :ido_id
59
+ validates_uniqueness_of :ido_id
60
+ before_validation Proc.new { |p| p.ido_id ||= UUID.new.generate }
61
+
58
62
  def add_all_users!
59
63
  User.all.each do |user|
60
64
  unless self.users.include?(user)
@@ -1,6 +1,12 @@
1
1
  module Fulcrum
2
2
  module Cloudfuji
3
3
  class Engine < Rails::Engine
4
+ config.before_initialize do
5
+ # Register observers to fire Cloudfuji events
6
+ config.active_record.observers = [(config.active_record.observers || [])].flatten
7
+ config.active_record.observers << :cloudfuji_story_observer
8
+ end
9
+
4
10
  config.to_prepare do
5
11
  ::Fulcrum::Application.class_eval do
6
12
  # Add migrations from engine to main migrations
@@ -1,5 +1,5 @@
1
1
  module Fulcrum
2
2
  module Cloudfuji
3
- VERSION = '0.1.1'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
@@ -1,6 +1,7 @@
1
1
  # Gem Dependencies
2
2
  require 'cloudfuji'
3
3
  require 'devise_cloudfuji_authenticatable'
4
+ require 'uuid'
4
5
 
5
6
  # Rails Engine
6
7
  require 'fulcrum_cloudfuji/engine'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fulcrum_cloudfuji
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-29 00:00:00.000000000 Z
13
+ date: 2012-05-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: cloudfuji
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.0.42
22
+ version: 0.0.44
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,7 +27,7 @@ dependencies:
27
27
  requirements:
28
28
  - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
- version: 0.0.42
30
+ version: 0.0.44
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: devise_cloudfuji_authenticatable
33
33
  requirement: !ruby/object:Gem::Requirement
@@ -44,6 +44,22 @@ dependencies:
44
44
  - - ! '>='
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: uuid
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
47
63
  description: Integrates Fulcrum with the Cloudfuji hosting platform.
48
64
  email: s@cloudfuji.com
49
65
  executables: []
@@ -56,6 +72,7 @@ files:
56
72
  - MIT-LICENSE
57
73
  - README
58
74
  - Rakefile
75
+ - app/observers/cloudfuji_story_observer.rb
59
76
  - app/views/layouts/application.html.erb
60
77
  - app/views/users/index.html.erb
61
78
  - config.ru
@@ -90,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
107
  version: '0'
91
108
  segments:
92
109
  - 0
93
- hash: -4343346583334309395
110
+ hash: -4296676230947075107
94
111
  required_rubygems_version: !ruby/object:Gem::Requirement
95
112
  none: false
96
113
  requirements:
@@ -99,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
116
  version: '0'
100
117
  segments:
101
118
  - 0
102
- hash: -4343346583334309395
119
+ hash: -4296676230947075107
103
120
  requirements: []
104
121
  rubyforge_project:
105
122
  rubygems_version: 1.8.24