fulcrum_cloudfuji 0.1.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.
- data/.gitignore +4 -0
- data/.travis.yml +7 -0
- data/Gemfile +17 -0
- data/MIT-LICENSE +20 -0
- data/README +6 -0
- data/Rakefile +4 -0
- data/app/views/layouts/application.html.erb +53 -0
- data/app/views/users/index.html.erb +39 -0
- data/config.ru +7 -0
- data/config/initializers/cloudfuji.rb +1 -0
- data/config/initializers/cloudfuji_config.rb +8 -0
- data/db/migrate/20120309045850_add_cloudfuji_authenticatable_fields_to_user.rb +11 -0
- data/db/migrate/20120318053922_add_ido_id_to_models.rb +7 -0
- data/db/migrate/20120405224034_add_active_to_users.rb +5 -0
- data/fulcrum_cloudfuji.gemspec +18 -0
- data/lib/fulcrum/cloudfuji.rb +98 -0
- data/lib/fulcrum/cloudfuji/event_observers/app_observer.rb +18 -0
- data/lib/fulcrum/cloudfuji/event_observers/project_observer.rb +31 -0
- data/lib/fulcrum/cloudfuji/event_observers/project_task_note_observer.rb +30 -0
- data/lib/fulcrum/cloudfuji/event_observers/project_task_observer.rb +39 -0
- data/lib/fulcrum/cloudfuji/event_observers/user_observer.rb +49 -0
- data/lib/fulcrum_cloudfuji.rb +6 -0
- data/lib/fulcrum_cloudfuji/engine.rb +23 -0
- data/lib/fulcrum_cloudfuji/version.rb +5 -0
- data/lib/tasks/cloudfuji.rake +32 -0
- metadata +108 -0
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
source :rubygems
|
2
|
+
|
3
|
+
gem 'rake'
|
4
|
+
|
5
|
+
gem 'bundler_local_development', :group => :development, :require => false
|
6
|
+
begin
|
7
|
+
require 'bundler_local_development'
|
8
|
+
rescue LoadError
|
9
|
+
end
|
10
|
+
|
11
|
+
gemspec
|
12
|
+
|
13
|
+
gem 'cloudfuji', :git => 'git://github.com/cloudfuji/cloudfuji_client.git'
|
14
|
+
|
15
|
+
group :test, :development do
|
16
|
+
gem 'pg' # Default database for testing
|
17
|
+
end
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 [name of plugin creator]
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= "#{@project.name} - " if @project %><%= t('fulcrum') %></title>
|
5
|
+
<%= csrf_meta_tags %>
|
6
|
+
<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.css">
|
7
|
+
<%= stylesheet_link_tag :application %>
|
8
|
+
<%= stylesheet_link_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.css" %>
|
9
|
+
<%= javascript_include_tag :application %>
|
10
|
+
</head>
|
11
|
+
<body>
|
12
|
+
|
13
|
+
<div id="header">
|
14
|
+
<ul id="primary-nav">
|
15
|
+
<li class="root"><%= link_to t('fulcrum'), root_path %></li>
|
16
|
+
<% if current_user %>
|
17
|
+
<li<%= ' class="secondary"'.html_safe if current_user.projects.present? %>>
|
18
|
+
<%= link_to Project.model_name.human.pluralize, root_path %>
|
19
|
+
<%- if current_user.projects.present? -%>
|
20
|
+
<ul>
|
21
|
+
<%- current_user.projects.each do |project| -%>
|
22
|
+
<li><%= link_to project, project %></li>
|
23
|
+
<%- end -%>
|
24
|
+
</ul>
|
25
|
+
<%- end %>
|
26
|
+
</li>
|
27
|
+
(<%= current_user.email %>)
|
28
|
+
<% unless Devise.on_cloudfuji? %>
|
29
|
+
<li><%= link_to current_user.email, edit_user_registration_path %></li>
|
30
|
+
<% end %>
|
31
|
+
<li><%= link_to t('log out'), destroy_user_session_path %></li>
|
32
|
+
<% else %>
|
33
|
+
<li><%= link_to t('log in'), new_user_session_path %></li>
|
34
|
+
<% unless Devise.on_cloudfuji? %>
|
35
|
+
<li><%= link_to t('sign up'), new_user_registration_path %></li>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
</ul>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div id="title_bar">
|
42
|
+
<%= yield :title_bar %>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div id="main">
|
46
|
+
<%= show_messages %>
|
47
|
+
|
48
|
+
<%= yield %>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
</body>
|
52
|
+
</html>
|
53
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<% content_for :title_bar do %>
|
2
|
+
<%= render :partial => 'projects/nav', :locals => {:project => @project} %>
|
3
|
+
<% end %>
|
4
|
+
<h2>Project members</h2>
|
5
|
+
<ul>
|
6
|
+
<% @users.each do |user| %>
|
7
|
+
<li><%= user %>
|
8
|
+
<% unless Devise.on_cloudfuji? %>
|
9
|
+
<%= link_to 'Remove', project_user_path(@project, user),
|
10
|
+
:confirm => "Are you sure you want to remove #{user.email} from this project?",
|
11
|
+
:method => :delete %>
|
12
|
+
<% end %>
|
13
|
+
</li>
|
14
|
+
<% end %>
|
15
|
+
</ul>
|
16
|
+
<% unless Devise.on_cloudfuji? %>
|
17
|
+
<h2>Add a new member</h2>
|
18
|
+
<div class="form-wrapper">
|
19
|
+
<%= form_for project_users_path(@project, @user) do |f| %>
|
20
|
+
<% fields_for :user do |u| %>
|
21
|
+
<div class="field-wrapper">
|
22
|
+
<%= u.label :email %>
|
23
|
+
<div class="field"><%= u.text_field :email %></div>
|
24
|
+
</div>
|
25
|
+
<div class="field-wrapper">
|
26
|
+
<%= u.label :name %>
|
27
|
+
<div class="field"><%= u.text_field :name %></div>
|
28
|
+
</div>
|
29
|
+
<div class="field-wrapper">
|
30
|
+
<%= u.label :initials %>
|
31
|
+
<div class="field"><%= u.text_field :initials %></div>
|
32
|
+
</div>
|
33
|
+
<div class="actions">
|
34
|
+
<%= u.submit 'Add user' %>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
</div>
|
39
|
+
<% end %>
|
data/config.ru
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'fulcrum/cloudfuji'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'fulcrum_cloudfuji/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'fulcrum_cloudfuji'
|
7
|
+
s.authors = ['Sean Grove', 'Nathan Broadbent']
|
8
|
+
s.email = 's@cloudfuji.com'
|
9
|
+
s.homepage = 'http://cloudfuji.com'
|
10
|
+
s.summary = 'Fulcrum - Cloudfuji Integration'
|
11
|
+
s.description = 'Integrates Fulcrum with the Cloudfuji hosting platform.'
|
12
|
+
s.files = `git ls-files`.split("\n")
|
13
|
+
s.version = Fulcrum::Cloudfuji::VERSION
|
14
|
+
|
15
|
+
s.add_dependency 'cloudfuji', '>= 0.0.42'
|
16
|
+
s.add_dependency 'devise_cloudfuji_authenticatable'
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module Fulcrum
|
2
|
+
module Cloudfuji
|
3
|
+
class << self
|
4
|
+
def enable_cloudfuji!
|
5
|
+
load_observers!
|
6
|
+
extend_user!
|
7
|
+
extend_project!
|
8
|
+
disable_devise_for_cloudfuji_controllers!
|
9
|
+
end
|
10
|
+
|
11
|
+
def extend_user!
|
12
|
+
puts "Extending the User model"
|
13
|
+
User.class_eval do
|
14
|
+
validates_presence_of :ido_id
|
15
|
+
validates_uniqueness_of :ido_id
|
16
|
+
|
17
|
+
attr_accessible :ido_id
|
18
|
+
|
19
|
+
after_create :add_all_projects!
|
20
|
+
before_destroy :remove_all_projects!
|
21
|
+
|
22
|
+
def set_random_password_if_blank
|
23
|
+
# Not needed with Cloudfuji authentication
|
24
|
+
super unless ::Cloudfuji::Platform.on_cloudfuji?
|
25
|
+
end
|
26
|
+
alias :set_reset_password_token :set_random_password_if_blank
|
27
|
+
|
28
|
+
def cloudfuji_extra_attributes(extra_attributes)
|
29
|
+
self.name = "#{extra_attributes['first_name'].to_s} #{extra_attributes['last_name'].to_s}"
|
30
|
+
if extra_attributes['first_name'] && extra_attributes['last_name']
|
31
|
+
self.initials = "#{extra_attributes['first_name'][0].upcase}#{extra_attributes['last_name'][0].upcase}"
|
32
|
+
else
|
33
|
+
self.initials = "#{extra_attributes['email'][0].upcase}#{extra_attributes['email'][1].upcase}"
|
34
|
+
end
|
35
|
+
|
36
|
+
self.email = extra_attributes["email"]
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_all_projects!
|
40
|
+
Project.all.each { |project| project.users << self unless project.users.member?(self) }
|
41
|
+
end
|
42
|
+
|
43
|
+
def remove_all_projects!
|
44
|
+
Project.all.each { |project| project.users.delete(self) if project.users.member?(self) }
|
45
|
+
end
|
46
|
+
|
47
|
+
def active_for_authentication?
|
48
|
+
super && active?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def extend_project!
|
54
|
+
puts "Extending the Project model"
|
55
|
+
Project.class_eval do
|
56
|
+
after_create :add_all_users!
|
57
|
+
|
58
|
+
def add_all_users!
|
59
|
+
User.all.each do |user|
|
60
|
+
unless self.users.include?(user)
|
61
|
+
self.users << user
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def load_observers!
|
69
|
+
Dir[File.expand_path("../cloudfuji/event_observers/*.rb", __FILE__)].each { |file| require file }
|
70
|
+
end
|
71
|
+
|
72
|
+
# Temporary hack because all routes require authentication in
|
73
|
+
# Fulcrum
|
74
|
+
def disable_devise_for_cloudfuji_controllers!
|
75
|
+
puts "Disabling devise auth protection on cloudfuji controllers"
|
76
|
+
|
77
|
+
::Cloudfuji::DataController.instance_eval { before_filter :authenticate_user!, :except => [:index] }
|
78
|
+
::Cloudfuji::EnvsController.instance_eval { before_filter :authenticate_user!, :except => [:update] }
|
79
|
+
::Cloudfuji::MailController.instance_eval { before_filter :authenticate_user!, :except => [:index] }
|
80
|
+
|
81
|
+
puts "Devise checks disabled for Cloudfuji controllers"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
if Cloudfuji::Platform.on_cloudfuji?
|
88
|
+
class CloudfujiRailtie < Rails::Railtie
|
89
|
+
# Enabling it via this hook means that it'll be reloaded on each
|
90
|
+
# request in development mode, so you can make changes in here and
|
91
|
+
# it'll be immeidately reflected
|
92
|
+
config.to_prepare do
|
93
|
+
puts "Enabling Cloudfuji"
|
94
|
+
Fulcrum::Cloudfuji.enable_cloudfuji!
|
95
|
+
puts "Finished enabling Cloudfuji"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fulcrum
|
2
|
+
module Cloudfuji
|
3
|
+
module EventObservers
|
4
|
+
class AppObserver < ::Cloudfuji::EventObserver
|
5
|
+
|
6
|
+
# This is here for eventual lazy-registration. Create a fake user on
|
7
|
+
# rake cloudfuji:install, and when the app is claimed, we'll get this
|
8
|
+
# event with the user info, so we convert the existing user and
|
9
|
+
# update their info here.
|
10
|
+
def app_claimed
|
11
|
+
User.order("created_at").first.update_attributes(:email => params['data']['email'],
|
12
|
+
:ido_id => params['data']['ido_id'])
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Fulcrum
|
2
|
+
module Cloudfuji
|
3
|
+
module EventObservers
|
4
|
+
class ProjectObserver < ::Cloudfuji::EventObserver
|
5
|
+
|
6
|
+
def project_created
|
7
|
+
puts params.inspect
|
8
|
+
puts "prarm"
|
9
|
+
data = params['data']
|
10
|
+
|
11
|
+
project = Project.find_by_ido_id(data['ido_id'])
|
12
|
+
project ||= Project.new
|
13
|
+
|
14
|
+
# Just in case
|
15
|
+
project.ido_id ||= data['ido_id']
|
16
|
+
project.name = data['name']
|
17
|
+
project.point_scale = 'linear' || data['point_scale'] # TODO: Put in a reverse lookup
|
18
|
+
project.iteration_start_day = data['iteration_start_day']
|
19
|
+
project.iteration_length = data['iteration_length']
|
20
|
+
|
21
|
+
project.save!
|
22
|
+
end
|
23
|
+
|
24
|
+
def project_imported
|
25
|
+
project_created
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fulcrum
|
2
|
+
module Cloudfuji
|
3
|
+
module EventObservers
|
4
|
+
class ProjectTaskNoteObserver < ::Cloudfuji::EventObserver
|
5
|
+
|
6
|
+
def project_task_note_created
|
7
|
+
data = params['data']
|
8
|
+
|
9
|
+
note = Note.find_by_ido_id(data['ido_id'])
|
10
|
+
note ||= Note.new
|
11
|
+
|
12
|
+
# Just in case
|
13
|
+
note.ido_id ||= data['ido_id']
|
14
|
+
note.note = data['note']
|
15
|
+
note.user = User.find_by_ido_id( data['author_id'] )
|
16
|
+
note.story = Story.find_by_ido_id( data['story_id'] )
|
17
|
+
|
18
|
+
puts note.inspect
|
19
|
+
|
20
|
+
note.save!
|
21
|
+
end
|
22
|
+
|
23
|
+
def project_task_note_imported
|
24
|
+
project_task_note_created
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Fulcrum
|
2
|
+
module Cloudfuji
|
3
|
+
module EventObservers
|
4
|
+
class ProjectTaskObserver < ::Cloudfuji::EventObserver
|
5
|
+
|
6
|
+
def project_task_created
|
7
|
+
data = params['data']
|
8
|
+
|
9
|
+
story = Story.find_by_ido_id(data['ido_id'])
|
10
|
+
story ||= Story.new
|
11
|
+
|
12
|
+
# Just in case
|
13
|
+
story.ido_id ||= data['ido_id']
|
14
|
+
story.title = data['title']
|
15
|
+
story.description = data['description']
|
16
|
+
story.estimate = data['estimate']
|
17
|
+
story.story_type = data['task_type']
|
18
|
+
story.state = data['state']
|
19
|
+
story.accepted_at = data['accepted_at']
|
20
|
+
story.requested_by_id = User.find_by_ido_id(data['requested_by_id'])
|
21
|
+
story.owned_by_id = User.find_by_ido_id(data['owned_by_id'])
|
22
|
+
story.project = Project.find_by_ido_id(data['project_id'])
|
23
|
+
story.labels = data['labels']
|
24
|
+
|
25
|
+
story.save!
|
26
|
+
end
|
27
|
+
|
28
|
+
def project_task_updated
|
29
|
+
project_task_created
|
30
|
+
end
|
31
|
+
|
32
|
+
def project_task_imported
|
33
|
+
project_task_created
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fulcrum
|
2
|
+
module Cloudfuji
|
3
|
+
module EventObservers
|
4
|
+
class UserObserver < ::Cloudfuji::EventObserver
|
5
|
+
|
6
|
+
def user_added
|
7
|
+
puts "Adding a new user with incoming data #{params.inspect}"
|
8
|
+
puts "Devise username column: #{::Devise.cas_username_column}="
|
9
|
+
puts "Setting username to: #{params['data'].try(:[], 'ido_id')}"
|
10
|
+
|
11
|
+
user = User.send("find_or_initialize_by_#{::Devise.cas_username_column}".to_sym, params['data'].try(:[], 'ido_id'))
|
12
|
+
user.email = params['data'].try(:[], 'email')
|
13
|
+
user.name = user.email.split('@').first
|
14
|
+
user.initials = user.email[0..1].upcase
|
15
|
+
user.active = true
|
16
|
+
user.save
|
17
|
+
|
18
|
+
# Add the new user to all existing projects
|
19
|
+
Project.all.each(&:add_all_users!)
|
20
|
+
end
|
21
|
+
|
22
|
+
def user_removed
|
23
|
+
puts "Removing user based on incoming data #{params.inspect}"
|
24
|
+
puts "Devise username column: #{::Devise.cas_username_column}="
|
25
|
+
|
26
|
+
user = User.find_by_ido_id(params['data']['ido_id'])
|
27
|
+
user.update_attribute(:active, false)
|
28
|
+
end
|
29
|
+
|
30
|
+
def user_updated
|
31
|
+
puts "Updating user based on incoming data #{params.inspect}"
|
32
|
+
puts "Devise username column: #{::Devise.cas_username_column}="
|
33
|
+
|
34
|
+
data = params['data']
|
35
|
+
user = User.find_by_ido_id(data['ido_id'])
|
36
|
+
|
37
|
+
if user
|
38
|
+
# Re-use the CAS login method to set all the extra attributes we
|
39
|
+
# care about (first_name, last_name, email, local, timezone,
|
40
|
+
# etc.)
|
41
|
+
user.cloudfuji_extra_attributes(data)
|
42
|
+
user.save
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Fulcrum
|
2
|
+
module Cloudfuji
|
3
|
+
class Engine < Rails::Engine
|
4
|
+
config.to_prepare do
|
5
|
+
::Fulcrum::Application.class_eval do
|
6
|
+
# Add migrations from engine to main migrations
|
7
|
+
config.paths['db/migrate'] += Fulcrum::Cloudfuji::Engine.paths['db/migrate'].existent
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Override engine view paths so that this gem's views can override application views
|
15
|
+
Rails::Engine.initializers.detect{|i| i.name == :add_view_paths }.
|
16
|
+
instance_variable_set("@block", Proc.new {
|
17
|
+
views = paths["app/views"].to_a
|
18
|
+
unless views.empty?
|
19
|
+
ActiveSupport.on_load(:action_controller){ append_view_path(views) }
|
20
|
+
ActiveSupport.on_load(:action_mailer){ append_view_path(views) }
|
21
|
+
end
|
22
|
+
}
|
23
|
+
)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
namespace :cloudfuji do
|
2
|
+
desc "Run the initial setup for a Busido app. Copies config files and seeds db."
|
3
|
+
task :install => :environment do
|
4
|
+
user = User.first
|
5
|
+
|
6
|
+
if user.nil?
|
7
|
+
puts "Creating default user..."
|
8
|
+
user = User.new
|
9
|
+
user.email = "#{::Cloudfuji::Platform.name}@#{ENV['CLOUDFUJI_HOST']}"
|
10
|
+
user.initials = ::Cloudfuji::Platform.name[0..1].upcase
|
11
|
+
user.name = ::Cloudfuji::Platform.name
|
12
|
+
user.ido_id = "temporary_user"
|
13
|
+
user.save!
|
14
|
+
end
|
15
|
+
|
16
|
+
project = Project.first
|
17
|
+
|
18
|
+
if project.nil?
|
19
|
+
puts "Creating default project..."
|
20
|
+
project = Project.new
|
21
|
+
project.name = "Default Project"
|
22
|
+
project.point_scale = "fibonacci"
|
23
|
+
project.start_date = Date.today
|
24
|
+
project.iteration_start_day = 1
|
25
|
+
project.iteration_length = 1
|
26
|
+
project.created_at = Time.now
|
27
|
+
project.updated_at = Time.now
|
28
|
+
project.default_velocity = 10
|
29
|
+
project.save!
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fulcrum_cloudfuji
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Sean Grove
|
9
|
+
- Nathan Broadbent
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-05-29 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: cloudfuji
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.0.42
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.0.42
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: devise_cloudfuji_authenticatable
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
description: Integrates Fulcrum with the Cloudfuji hosting platform.
|
48
|
+
email: s@cloudfuji.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- .gitignore
|
54
|
+
- .travis.yml
|
55
|
+
- Gemfile
|
56
|
+
- MIT-LICENSE
|
57
|
+
- README
|
58
|
+
- Rakefile
|
59
|
+
- app/views/layouts/application.html.erb
|
60
|
+
- app/views/users/index.html.erb
|
61
|
+
- config.ru
|
62
|
+
- config/initializers/cloudfuji.rb
|
63
|
+
- config/initializers/cloudfuji_config.rb
|
64
|
+
- db/migrate/20120309045850_add_cloudfuji_authenticatable_fields_to_user.rb
|
65
|
+
- db/migrate/20120318053922_add_ido_id_to_models.rb
|
66
|
+
- db/migrate/20120405224034_add_active_to_users.rb
|
67
|
+
- fulcrum_cloudfuji.gemspec
|
68
|
+
- lib/fulcrum/cloudfuji.rb
|
69
|
+
- lib/fulcrum/cloudfuji/event_observers/app_observer.rb
|
70
|
+
- lib/fulcrum/cloudfuji/event_observers/project_observer.rb
|
71
|
+
- lib/fulcrum/cloudfuji/event_observers/project_task_note_observer.rb
|
72
|
+
- lib/fulcrum/cloudfuji/event_observers/project_task_observer.rb
|
73
|
+
- lib/fulcrum/cloudfuji/event_observers/user_observer.rb
|
74
|
+
- lib/fulcrum_cloudfuji.rb
|
75
|
+
- lib/fulcrum_cloudfuji/engine.rb
|
76
|
+
- lib/fulcrum_cloudfuji/version.rb
|
77
|
+
- lib/tasks/cloudfuji.rake
|
78
|
+
homepage: http://cloudfuji.com
|
79
|
+
licenses: []
|
80
|
+
post_install_message:
|
81
|
+
rdoc_options: []
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
hash: 4575079031632976573
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
hash: 4575079031632976573
|
102
|
+
requirements: []
|
103
|
+
rubyforge_project:
|
104
|
+
rubygems_version: 1.8.24
|
105
|
+
signing_key:
|
106
|
+
specification_version: 3
|
107
|
+
summary: Fulcrum - Cloudfuji Integration
|
108
|
+
test_files: []
|