errbit_cloudfuji 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.travis.yml +7 -0
- data/Gemfile +26 -0
- data/MIT-LICENSE +20 -0
- data/README +6 -0
- data/Rakefile +27 -0
- data/app/models/err_observer.rb +22 -0
- data/app/models/notice_observer.rb +38 -0
- data/app/views/users/_fields.html.haml +37 -0
- data/app/views/users/index.html.haml +23 -0
- data/config/cloudfuji.json +8 -0
- data/config/initializers/cloudfuji.rb +10 -0
- data/config/initializers/cloudfuji_config.rb +28 -0
- data/config/mongoid.cloudfuji.yml +8 -0
- data/config.ru +7 -0
- data/errbit_cloudfuji.gemspec +22 -0
- data/lib/errbit/cloudfuji/event_observers/app_observer.rb +19 -0
- data/lib/errbit/cloudfuji/event_observers/user_observer.rb +41 -0
- data/lib/errbit/cloudfuji.rb +71 -0
- data/lib/errbit_cloudfuji/engine.rb +17 -0
- data/lib/errbit_cloudfuji/version.rb +5 -0
- data/lib/errbit_cloudfuji.rb +6 -0
- data/lib/tasks/cloudfuji.rake +21 -0
- data/spec/spec_helper.rb +22 -0
- metadata +149 -0
data/.gitignore
ADDED
data/.travis.yml
ADDED
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
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,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
|
data/config.ru
ADDED
@@ -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,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
|
data/spec/spec_helper.rb
ADDED
@@ -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: []
|