errbit_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 ADDED
@@ -0,0 +1,4 @@
1
+ pkg/
2
+ *.gem
3
+ Gemfile.lock
4
+ spec/internal/log/
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ lang: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+
6
+ before_script:
7
+ - sh -c "psql -c 'create database ffcrm_cloudfuji_test;' -U postgres"
data/Gemfile ADDED
@@ -0,0 +1,26 @@
1
+ source :rubygems
2
+
3
+ gem 'bundler_local_development', :group => :development, :require => false
4
+ begin
5
+ require 'bundler_local_development'
6
+ rescue LoadError
7
+ end
8
+
9
+ gemspec
10
+
11
+ gem 'cloudfuji', :git => 'git://github.com/cloudfuji/cloudfuji_client.git'
12
+
13
+ group :test, :development do
14
+ gem 'pg' # Default database for testing
15
+ end
16
+
17
+ group :test do
18
+ gem 'rspec'
19
+ gem 'combustion'
20
+ gem 'factory_girl'
21
+ unless ENV["CI"]
22
+ gem 'ruby-debug', :platform => :mri_18
23
+ gem (RUBY_VERSION == "1.9.2" ? 'ruby-debug19' : 'debugger'), :platform => :mri_19
24
+ end
25
+ end
26
+
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
@@ -0,0 +1,6 @@
1
+ Errbit - Cloudfuji Integration
2
+ ====================================
3
+
4
+ Integrates Errbit with the Cloudfuji hosting platform.
5
+
6
+ Copyright (c) 2012 Cloudfuji
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ Bundler.require :default, :development
8
+
9
+ task :environment do
10
+ Combustion.initialize!
11
+ end
12
+ Combustion::Application.load_tasks
13
+
14
+ class Combustion::Application
15
+ # Add migrations from all engines
16
+ Railties.engines.each do |engine|
17
+ config.paths['db/migrate'] += engine.paths['db/migrate'].existent
18
+ end
19
+ end
20
+
21
+ desc 'Default: run spec tests.'
22
+ task :default => :spec
23
+
24
+ # Let Combustion handle database preparation
25
+ Rake::Task["spec"].prerequisites.clear
26
+
27
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,22 @@
1
+ class ErrObserver < Mongoid::Observer
2
+ def after_create(err)
3
+ if ::Cloudfuji::Platform.on_cloudfuji?
4
+ human_message = issue_title(err.problem)
5
+ human_message += " see more at #{Rails.application.routes.url_helpers.app_err_url(err.problem.app, err, :host => ENV['CLOUDFUJI_DOMAIN'])}"
6
+ event = {
7
+ :category => :app,
8
+ :name => :errored,
9
+ :data => {
10
+ :human => human_message,
11
+ :source => "Errbit",
12
+ :url => Rails.application.routes.url_helpers.app_err_url(err.problem.app, err, :host => ENV['CLOUDFUJI_DOMAIN'])
13
+ }
14
+ }
15
+ ::Cloudfuji::Event.publish(event)
16
+ end
17
+ end
18
+
19
+ def issue_title(problem)
20
+ "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}"
21
+ end
22
+ end
@@ -0,0 +1,38 @@
1
+ class NoticeObserver < Mongoid::Observer
2
+ def after_create(notice)
3
+ if ::Cloudfuji::Platform.on_cloudfuji?
4
+ @notice = notice
5
+ @err = notice.err
6
+ @app = notice.problem.app
7
+
8
+ human_message = notice_title(notice.err.problem)
9
+ human_message += " see more at #{Rails.application.routes.url_helpers.app_err_url(@app, @notice.problem, :host => ENV['CLOUDFUJI_DOMAIN'])}"
10
+ event = {
11
+ :category => :app,
12
+ :name => :errored,
13
+ :data => {
14
+ :human => human_message,
15
+ :environment_name => @notice.environment_name,
16
+ :occurrences => @notice.problem.notices_count,
17
+ :message => @notice.message,
18
+ :app_backtrace => @notice.app_backtrace,
19
+ :request => @notice.request,
20
+ :source => "Errbit",
21
+ :url => Rails.application.routes.url_helpers.app_err_url(@app, @err, :host => ENV['CLOUDFUJI_DOMAIN'])
22
+ }
23
+ }
24
+
25
+ ::Cloudfuji::Event.publish(event)
26
+
27
+ puts "Notifying: #{@app.watchers.inspect}"
28
+ @app.watchers.each do |watcher|
29
+ ido_id = watcher.user.ido_id
30
+ Cloudfuji::User.notify(ido_id, "Site Error", human_message, "site_error") unless ido_id.blank?
31
+ end
32
+ end
33
+ end
34
+
35
+ def notice_title(notice)
36
+ "[#{@app.name}][#{@notice.environment_name}] #{@notice.message}"
37
+ end
38
+ end
@@ -0,0 +1,37 @@
1
+ = errors_for @user
2
+
3
+ .required
4
+ = f.label :name
5
+ = f.text_field :name
6
+
7
+ - if Errbit::Config.user_has_username
8
+ .required
9
+ = f.label :username
10
+ = f.text_field :username
11
+
12
+ .required
13
+ = f.label :email
14
+ = f.text_field :email
15
+
16
+ .required
17
+ = f.label 'Entries per page'
18
+ = f.select :per_page, [10, 20, 30, 50, 75, 100]
19
+
20
+ .required
21
+ = f.label :time_zone
22
+ = f.time_zone_select :time_zone, ActiveSupport::TimeZone.us_zones
23
+
24
+ - unless Cloudfuji::Platform.on_cloudfuji?
25
+ .required
26
+ = f.label :password
27
+ = f.password_field :password
28
+
29
+ .required
30
+ = f.label :password_confirmation
31
+ = f.password_field :password_confirmation
32
+
33
+ - if current_user.admin?
34
+ .checkbox
35
+ = f.check_box :admin
36
+ = f.label :admin, 'Admin?'
37
+
@@ -0,0 +1,23 @@
1
+ - content_for :title, 'Users'
2
+ - if not Devise.on_cloudfuji?
3
+ - content_for :action_bar do
4
+ %span= link_to('Add a New User', new_user_path, :class => 'add')
5
+
6
+ %table
7
+ %thead
8
+ %tr
9
+ %th Name
10
+ - if Errbit::Config.user_has_username
11
+ %th Username
12
+ %th.main Email
13
+ %th Admin?
14
+ %tbody
15
+ - @users.each do |user|
16
+ %tr
17
+ %td.nowrap= link_to user.name, user_path(user)
18
+ - if Errbit::Config.user_has_username
19
+ %td= user.username
20
+ %td= user.email
21
+ %td= user.admin? ? 'Y' : 'N'
22
+ = paginate @users
23
+
@@ -0,0 +1,8 @@
1
+ {
2
+ "platform": "rails",
3
+ "platform_version": 3,
4
+ "ruby_version": "1.9.2",
5
+ "sql": false,
6
+ "mongodb": true,
7
+ "project_name": "errbit"
8
+ }
@@ -0,0 +1,10 @@
1
+ require 'errbit/cloudfuji'
2
+
3
+ Errbit::Application.configure do
4
+ # Register observers to fire Cloudfuji events
5
+ config.mongoid.observers = :err_observer, :notice_observer
6
+
7
+ # Set default host for ActionMailer
8
+ default_host = ENV['ERRBIT_HOST'] || ENV['BUSHIDO_DOMAIN']
9
+ config.action_mailer.default_url_options = { :host => default_host } if default_host
10
+ end
@@ -0,0 +1,28 @@
1
+ if ENV['HOSTING_PLATFORM'] == 'cloudfuji'
2
+ require 'ostruct'
3
+ Errbit::Config = OpenStruct.new
4
+
5
+ puts "Loading Cloudfuji config"
6
+ Errbit::Config.host = ENV['CLOUDFUJI_DOMAIN']
7
+ Errbit::Config.email_from = ENV['SMTP_USER']
8
+ Errbit::Config.email_at_notices = [1,3,10] #ENV['ERRBIT_EMAIL_AT_NOTICES']
9
+ Errbit::Config.confirm_resolve_err = true
10
+ Errbit::Config.user_has_ido_id = true
11
+ Errbit::Config.allow_comments_with_issue_tracker = true
12
+
13
+ Errbit::Config.smtp_settings = {
14
+ :address => ENV["SMTP_SERVER"],
15
+ :port => ENV["SMTP_PORT"],
16
+ :authentication => ENV["SMTP_AUTHENTICATION"],
17
+ :user_name => ENV["SMTP_USER"],
18
+ :password => ENV["SMTP_PASSWORD"],
19
+ :domain => ENV["SMTP_DOMAIN"]
20
+ }
21
+
22
+ Errbit::Config.devise_modules = [:cloudfuji_authenticatable,
23
+ :rememberable,
24
+ :trackable,
25
+ :token_authenticatable]
26
+
27
+ puts "Devise modules: #{Errbit::Config.devise_modules.inspect}"
28
+ end
@@ -0,0 +1,8 @@
1
+ # Mongoid Configuration for MongoHQ on Cloudfuji
2
+ # ============================================
3
+
4
+ development:
5
+ uri: <%= ENV['MONGODB_URL'] %>
6
+
7
+ production:
8
+ uri: <%= ENV['MONGODB_URL'] %>
data/config.ru ADDED
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ Bundler.require :default, :development
5
+
6
+ Combustion.initialize!
7
+ run Combustion::Application
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'errbit_cloudfuji/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'errbit_cloudfuji'
7
+ s.authors = ['Sean Grove', 'Nathan Broadbent']
8
+ s.email = 's@cloudfuji.com'
9
+ s.homepage = 'http://cloudfuji.com'
10
+ s.summary = 'Errbit - Cloudfuji Integration'
11
+ s.description = 'Integrates Errbit with the Cloudfuji hosting platform.'
12
+ s.files = `git ls-files`.split("\n")
13
+ s.version = Errbit::Cloudfuji::VERSION
14
+
15
+ s.add_development_dependency 'rspec-rails', '~> 2.6'
16
+ s.add_development_dependency 'capybara'
17
+ s.add_development_dependency 'combustion'
18
+
19
+ s.add_dependency 'cloudfuji', '>= 0.0.42'
20
+ s.add_dependency 'devise_cloudfuji_authenticatable'
21
+
22
+ end
@@ -0,0 +1,19 @@
1
+ module Errbit
2
+ module Cloudfuji
3
+ module EventObservers
4
+ class AppObserver < ::Cloudfuji::EventObserver
5
+ def app_claimed
6
+ puts "Updating #{User.first.inspect} with incoming data #{params.inspect}"
7
+ puts "Devise username column: #{::Devise.cas_username_column}="
8
+ puts "Setting username to: #{params.try(:[], 'ido_id')}"
9
+
10
+ user = User.first
11
+ user.email = params['data'].try(:[], 'email')
12
+ user.name = user.email.split('@').first
13
+ user.send("#{::Devise.cas_username_column}=".to_sym, params['data'].try(:[], 'ido_id'))
14
+ user.save
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,41 @@
1
+ module Errbit
2
+ module Cloudfuji
3
+ module EventObservers
4
+ class AppObserver < ::Cloudfuji::EventObserver
5
+ def user_added
6
+ puts "Adding a new user with incoming data #{params.inspect}"
7
+ puts "Devise username column: #{::Devise.cas_username_column}="
8
+ puts "Setting username to: #{params['data'].try(:[], 'ido_id')}"
9
+
10
+ user = User.new(:email => params['data'].try(:[], 'email'))
11
+ user.name = user.email.split('@').first
12
+ user.send("#{::Devise.cas_username_column}=".to_sym, params['data'].try(:[], 'ido_id'))
13
+ user.save
14
+ end
15
+
16
+ def user_removed
17
+ puts "Removing user based on incoming data #{params.inspect}"
18
+ puts "Devise username column: #{::Devise.cas_username_column}="
19
+
20
+ ido_id = params['data'].try(:[], 'ido_id')
21
+
22
+ ido_id and
23
+ User.exists?(:conditions => {::Devise.cas_username_column => ido_id}) and
24
+ User.where(::Devise.cas_username_column => ido_id).destroy
25
+ end
26
+
27
+ def user_updated
28
+ puts "Updating user based on incoming data #{params.inspect}"
29
+ puts "Devise username column: #{::Devise.cas_username_column}="
30
+ ido_id = params['data'].try(:[], 'ido_id')
31
+
32
+ if ido_id and User.exists?(:conditions => {::Devise.cas_username_column => ido_id})
33
+ user = User.where(::Devise.cas_username_column => ido_id).first
34
+ user.cloudfuji_extra_attributes(params['data'])
35
+ user.save
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,71 @@
1
+ module Errbit
2
+ module Cloudfuji
3
+ class << self
4
+ def enable_cloudfuji!
5
+ load_hooks!
6
+ extend_user!
7
+ extend_notice!
8
+ disable_devise_for_cloudfuji_controllers!
9
+ end
10
+
11
+ def extend_user!
12
+ puts "Extending the user model"
13
+ User.instance_eval do
14
+ validates_presence_of :ido_id
15
+ validates_uniqueness_of :ido_id
16
+ end
17
+
18
+ User.class_eval do
19
+ def cloudfuji_extra_attributes(extra_attributes)
20
+ self.name = "#{extra_attributes['first_name'].to_s} #{extra_attributes['last_name'].to_s}"
21
+ self.email = extra_attributes["email"]
22
+ self.admin = true
23
+ end
24
+ end
25
+ end
26
+
27
+ def extend_notice!
28
+ Notice.class_eval do
29
+ def publish_cloudfuji_event
30
+ human_message = "App at #{server_environment['hostname']} error"
31
+ ::Cloudfuji::Event.publish({
32
+ :category => :app,
33
+ :name => :error,
34
+ :data => {
35
+ :human => human_message,
36
+ :source => "Errbit",
37
+ :url => "#{ENV['PUBLIC_URL']}/#tickets/#{self.to_param}"
38
+ }
39
+ })
40
+ end
41
+ end
42
+ end
43
+
44
+ def load_hooks!
45
+ Dir["#{Dir.pwd}/lib/cloudfuji/**/*.rb"].each { |file| require file }
46
+ end
47
+
48
+ # Temporary hack because all routes require authentication in
49
+ # Errbit
50
+ def disable_devise_for_cloudfuji_controllers!
51
+ puts "Disabling devise auth protection on cloudfuji controllers"
52
+
53
+ ::Cloudfuji::DataController.instance_eval { before_filter :authenticate_user!, :except => [:index] }
54
+ ::Cloudfuji::EnvsController.instance_eval { before_filter :authenticate_user!, :except => [:update] }
55
+ ::Cloudfuji::MailController.instance_eval { before_filter :authenticate_user!, :except => [:index] }
56
+
57
+ puts "Devise checks disabled for Cloudfuji controllers"
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ if Cloudfuji::Platform.on_cloudfuji?
64
+ class CloudfujiRailtie < Rails::Railtie
65
+ config.to_prepare do
66
+ puts "Enabling Cloudfuji"
67
+ Errbit::Cloudfuji.enable_cloudfuji!
68
+ puts "Finished enabling Cloudfuji"
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,17 @@
1
+ # Override engine view paths so that this gem's views can override application views
2
+ Rails::Engine.initializers.detect{|i| i.name == :add_view_paths }.
3
+ instance_variable_set("@block", Proc.new {
4
+ views = paths["app/views"].to_a
5
+ unless views.empty?
6
+ ActiveSupport.on_load(:action_controller){ append_view_path(views) }
7
+ ActiveSupport.on_load(:action_mailer){ append_view_path(views) }
8
+ end
9
+ }
10
+ )
11
+
12
+ module Errbit
13
+ module Cloudfuji
14
+ class Engine < Rails::Engine
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ module Errbit
2
+ module Cloudfuji
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ # Gem Dependencies
2
+ require 'cloudfuji'
3
+ require 'devise_cloudfuji_authenticatable'
4
+
5
+ # Rails Engine
6
+ require 'errbit_cloudfuji/engine'
@@ -0,0 +1,21 @@
1
+ require 'fileutils'
2
+
3
+ namespace :cloudfuji do
4
+
5
+ desc "Copys of example config files"
6
+ task :copy_configs do
7
+ unless File.exist? Rails.root.join('config/mongoid.yml')
8
+ FileUtils.cp File.expand_path("../../../config/mongoid.cloudfuji.yml", __FILE__),
9
+ Rails.root.join('config/mongoid.yml')
10
+ end
11
+ end
12
+
13
+ desc "Run the initial setup for a Busido app. Copies config files and seeds db."
14
+ task :install do
15
+ Rake::Task['cloudfuji:copy_configs'].execute
16
+ puts "\n"
17
+ Rake::Task['db:seed'].invoke
18
+ puts "\n"
19
+ Rake::Task['db:mongoid:create_indexes'].invoke
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ require 'rails/all'
4
+
5
+ Bundler.require :default, :development
6
+
7
+ require 'rspec/rails'
8
+ require 'factory_girl'
9
+ require 'ffaker'
10
+
11
+ # Load factories from spec/factories
12
+ Dir[File.expand_path("../factories/*.rb", __FILE__)].each {|factory| require factory }
13
+
14
+ Combustion.initialize!
15
+
16
+ RSpec.configure do |config|
17
+ config.use_transactional_fixtures = true
18
+ end
19
+
20
+ # Cloudfuji::Platform.on_cloudfuji? is false,
21
+ # so we need to enable it manually
22
+ Errbit::Cloudfuji.enable_cloudfuji!
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: errbit_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-21 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec-rails
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '2.6'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '2.6'
31
+ - !ruby/object:Gem::Dependency
32
+ name: capybara
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
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
+ - !ruby/object:Gem::Dependency
48
+ name: combustion
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: cloudfuji
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: 0.0.42
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: 0.0.42
79
+ - !ruby/object:Gem::Dependency
80
+ name: devise_cloudfuji_authenticatable
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ description: Integrates Errbit with the Cloudfuji hosting platform.
96
+ email: s@cloudfuji.com
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .gitignore
102
+ - .travis.yml
103
+ - Gemfile
104
+ - MIT-LICENSE
105
+ - README
106
+ - Rakefile
107
+ - app/models/err_observer.rb
108
+ - app/models/notice_observer.rb
109
+ - app/views/users/_fields.html.haml
110
+ - app/views/users/index.html.haml
111
+ - config.ru
112
+ - config/cloudfuji.json
113
+ - config/initializers/cloudfuji.rb
114
+ - config/initializers/cloudfuji_config.rb
115
+ - config/mongoid.cloudfuji.yml
116
+ - errbit_cloudfuji.gemspec
117
+ - lib/errbit/cloudfuji.rb
118
+ - lib/errbit/cloudfuji/event_observers/app_observer.rb
119
+ - lib/errbit/cloudfuji/event_observers/user_observer.rb
120
+ - lib/errbit_cloudfuji.rb
121
+ - lib/errbit_cloudfuji/engine.rb
122
+ - lib/errbit_cloudfuji/version.rb
123
+ - lib/tasks/cloudfuji.rake
124
+ - spec/spec_helper.rb
125
+ homepage: http://cloudfuji.com
126
+ licenses: []
127
+ post_install_message:
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 1.8.24
146
+ signing_key:
147
+ specification_version: 3
148
+ summary: Errbit - Cloudfuji Integration
149
+ test_files: []