fulcrum_cloudfuji 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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