errbit_cloudfuji 0.1.0

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