mno-enterprise-core 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +1 -0
- data/Rakefile +12 -0
- data/app/assets/images/mno_enterprise/main-logo.png +0 -0
- data/app/controllers/mno_enterprise/application_controller.rb +116 -0
- data/app/helpers/mno_enterprise/application_helper.rb +67 -0
- data/app/helpers/mno_enterprise/impersonate_helper.rb +27 -0
- data/app/models/mno_enterprise/ability.rb +6 -0
- data/app/models/mno_enterprise/app.rb +72 -0
- data/app/models/mno_enterprise/app_instance.rb +36 -0
- data/app/models/mno_enterprise/app_instances_sync.rb +6 -0
- data/app/models/mno_enterprise/arrears_situation.rb +6 -0
- data/app/models/mno_enterprise/audit_event.rb +21 -0
- data/app/models/mno_enterprise/base_resource.rb +228 -0
- data/app/models/mno_enterprise/credit_card.rb +40 -0
- data/app/models/mno_enterprise/deletion_request.rb +35 -0
- data/app/models/mno_enterprise/impac/dashboard.rb +36 -0
- data/app/models/mno_enterprise/impac/dashboard_provisioner.rb +5 -0
- data/app/models/mno_enterprise/impac/kpi.rb +9 -0
- data/app/models/mno_enterprise/impac/widget.rb +13 -0
- data/app/models/mno_enterprise/invoice.rb +53 -0
- data/app/models/mno_enterprise/org_invite.rb +50 -0
- data/app/models/mno_enterprise/organization.rb +33 -0
- data/app/models/mno_enterprise/team.rb +50 -0
- data/app/models/mno_enterprise/tenant.rb +5 -0
- data/app/models/mno_enterprise/tenant_invoice.rb +5 -0
- data/app/models/mno_enterprise/user.rb +183 -0
- data/app/pdf/mno_enterprise/invoice_pdf.rb +516 -0
- data/config/initializers/audit_log.rb +5 -0
- data/config/locales/devise.en.yml +60 -0
- data/config/routes.rb +2 -0
- data/config/styleguide.yml +106 -0
- data/lib/accountingjs_serializer.rb +51 -0
- data/lib/devise/controllers/extension_helpers.rb +52 -0
- data/lib/devise/extension_routes.rb +11 -0
- data/lib/devise/hooks/password_expirable.rb +5 -0
- data/lib/devise/models/password_expirable.rb +28 -0
- data/lib/devise/models/remote_authenticatable.rb +48 -0
- data/lib/devise/strategies/remote_authenticatable.rb +44 -0
- data/lib/devise_extension.rb +36 -0
- data/lib/faraday/adapter/net_http_no_proxy.rb +19 -0
- data/lib/generators/mno_enterprise/database_extension/USAGE +11 -0
- data/lib/generators/mno_enterprise/database_extension/database_extension_generator.rb +36 -0
- data/lib/generators/mno_enterprise/database_extension/templates/model.rb +9 -0
- data/lib/generators/mno_enterprise/dummy/dummy_generator.rb +98 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/application.rb.erb +9 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/boot.rb.erb +6 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/database.yml +22 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/routes.rb +8 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/test-env.rb +45 -0
- data/lib/generators/mno_enterprise/install/install_generator.rb +140 -0
- data/lib/generators/mno_enterprise/install/templates/Procfile +1 -0
- data/lib/generators/mno_enterprise/install/templates/config/initializers/mno_enterprise.rb +135 -0
- data/lib/generators/mno_enterprise/install/templates/config/mno_enterprise_styleguide.yml +104 -0
- data/lib/generators/mno_enterprise/install/templates/javascripts/mno_enterprise_extensions.js +7 -0
- data/lib/generators/mno_enterprise/install/templates/stylesheets/main.less_erb +25 -0
- data/lib/generators/mno_enterprise/install/templates/stylesheets/theme.less_erb +59 -0
- data/lib/generators/mno_enterprise/install/templates/stylesheets/variables.less +337 -0
- data/lib/generators/mno_enterprise/install/templates/tasks/sprites.rake +14 -0
- data/lib/generators/mno_enterprise/puma_stack/puma_stack_generator.rb +58 -0
- data/lib/generators/mno_enterprise/templates/scripts/monit/app-server.conf +8 -0
- data/lib/generators/mno_enterprise/templates/scripts/nginx/app +51 -0
- data/lib/generators/mno_enterprise/templates/scripts/puma.rb +25 -0
- data/lib/generators/mno_enterprise/templates/scripts/setup.sh +27 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app-web-hotrestart.conf +26 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app-web-server.conf +34 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app-web.conf +2 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app.conf +11 -0
- data/lib/her_extension/her_orm_adapter.rb +54 -0
- data/lib/her_extension/middleware/mnoe_api_v1_parse_json.rb +54 -0
- data/lib/her_extension/model/associations/association.rb +61 -0
- data/lib/her_extension/model/associations/association_proxy.rb +34 -0
- data/lib/her_extension/model/associations/has_many_association.rb +115 -0
- data/lib/her_extension/model/attributes.rb +43 -0
- data/lib/her_extension/model/orm.rb +59 -0
- data/lib/her_extension/model/parse.rb +40 -0
- data/lib/her_extension/model/relation.rb +92 -0
- data/lib/her_extension/validations/remote_uniqueness_validation.rb +33 -0
- data/lib/html_processor.rb +106 -0
- data/lib/mandrill_client.rb +58 -0
- data/lib/mno-enterprise-core.rb +1 -0
- data/lib/mno_enterprise/concerns.rb +4 -0
- data/lib/mno_enterprise/concerns/controllers.rb +6 -0
- data/lib/mno_enterprise/concerns/controllers/angular_csrf.rb +59 -0
- data/lib/mno_enterprise/concerns/controllers/auth.rb +9 -0
- data/lib/mno_enterprise/concerns/controllers/auth/confirmations_controller.rb +187 -0
- data/lib/mno_enterprise/concerns/controllers/auth/passwords_controller.rb +54 -0
- data/lib/mno_enterprise/concerns/controllers/auth/registrations_controller.rb +136 -0
- data/lib/mno_enterprise/concerns/controllers/auth/sessions_controller.rb +54 -0
- data/lib/mno_enterprise/concerns/controllers/auth/unlocks_controller.rb +50 -0
- data/lib/mno_enterprise/concerns/models.rb +6 -0
- data/lib/mno_enterprise/concerns/models/ability.rb +108 -0
- data/lib/mno_enterprise/concerns/models/app_instance.rb +100 -0
- data/lib/mno_enterprise/concerns/models/organization.rb +102 -0
- data/lib/mno_enterprise/core.rb +279 -0
- data/lib/mno_enterprise/database_extendable.rb +57 -0
- data/lib/mno_enterprise/engine.rb +33 -0
- data/lib/mno_enterprise/testing_support/ability_test_helper.rb +10 -0
- data/lib/mno_enterprise/testing_support/common_rake.rb +19 -0
- data/lib/mno_enterprise/testing_support/factories.rb +13 -0
- data/lib/mno_enterprise/testing_support/factories/app_instances.rb +30 -0
- data/lib/mno_enterprise/testing_support/factories/apps.rb +45 -0
- data/lib/mno_enterprise/testing_support/factories/arrears_situation.rb +14 -0
- data/lib/mno_enterprise/testing_support/factories/audit_event.rb +15 -0
- data/lib/mno_enterprise/testing_support/factories/credit_card.rb +33 -0
- data/lib/mno_enterprise/testing_support/factories/deletion_request.rb +17 -0
- data/lib/mno_enterprise/testing_support/factories/impac/dashboards.rb +15 -0
- data/lib/mno_enterprise/testing_support/factories/impac/kpis.rb +20 -0
- data/lib/mno_enterprise/testing_support/factories/impac/widgets.rb +15 -0
- data/lib/mno_enterprise/testing_support/factories/invoices.rb +51 -0
- data/lib/mno_enterprise/testing_support/factories/org_invite.rb +24 -0
- data/lib/mno_enterprise/testing_support/factories/organizations.rb +25 -0
- data/lib/mno_enterprise/testing_support/factories/team.rb +17 -0
- data/lib/mno_enterprise/testing_support/factories/tenant.rb +12 -0
- data/lib/mno_enterprise/testing_support/factories/tenant_invoice.rb +29 -0
- data/lib/mno_enterprise/testing_support/factories/users.rb +48 -0
- data/lib/mno_enterprise/testing_support/jpi_v1_test_helper.rb +49 -0
- data/lib/mno_enterprise/testing_support/mno_enterprise_api_test_helper.rb +167 -0
- data/lib/mno_enterprise/testing_support/mnoe_faraday_test_adapter.rb +173 -0
- data/lib/mno_enterprise/testing_support/organizations_shared_helpers.rb +175 -0
- data/lib/mno_enterprise/testing_support/user_action_shared.rb +47 -0
- data/lib/mno_enterprise/version.rb +3 -0
- data/lib/tasks/mno_enterprise_tasks.rake +22 -0
- data/spec/controllers/mno_enterprise/angular_csrf_spec.rb +42 -0
- data/spec/lib/her_extension/her_orm_adapter.rb +7 -0
- data/spec/lib/her_extension/model/relation_spec.rb +7 -0
- data/spec/lib/mandrill_client_spec.rb +64 -0
- data/spec/mno_enterprise_spec.rb +79 -0
- data/spec/models/mno_enterprise/app_instance_spec.rb +7 -0
- data/spec/models/mno_enterprise/app_spec.rb +62 -0
- data/spec/models/mno_enterprise/base_resource_spec.rb +28 -0
- data/spec/models/mno_enterprise/deletion_request_spec.rb +26 -0
- data/spec/models/mno_enterprise/invoice_spec.rb +7 -0
- data/spec/models/mno_enterprise/organization_spec.rb +7 -0
- data/spec/models/mno_enterprise/user_spec.rb +44 -0
- data/spec/rails_helper.rb +73 -0
- data/spec/spec_helper.rb +78 -0
- metadata +421 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
module Faraday
|
2
|
+
class Adapter
|
3
|
+
class NetHttpNoProxy < Faraday::Adapter::NetHttp
|
4
|
+
def net_http_connection(env)
|
5
|
+
# Monkey Patch, never use the request to set the proxy settings, let Net::HTTP figure out by itself from
|
6
|
+
# the environment variables
|
7
|
+
|
8
|
+
# Original code:
|
9
|
+
# if proxy = env[:request][:proxy]
|
10
|
+
# Net::HTTP::Proxy(proxy[:uri].host, proxy[:uri].port, proxy[:user], proxy[:password])
|
11
|
+
# else
|
12
|
+
# Net::HTTP
|
13
|
+
# end.new(env[:url].host, env[:url].port || (env[:url].scheme == 'https' ? 443 : 80))
|
14
|
+
|
15
|
+
Net::HTTP.new(env[:url].host, env[:url].port || (env[:url].scheme == 'https' ? 443 : 80))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Description:
|
2
|
+
Create a database extension of an existing Mnoe model
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate mno_enterprise:database_extension Organization growth_type:string
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
Model: app/models/mno_enterprise/organization.rb
|
9
|
+
Model: app/models/mno_enterprise/organization_extension.rb
|
10
|
+
Spec: spec/models/mno_enterprise/organization_extension_spec.rb
|
11
|
+
Migration: db/migrate/XXX_create_mno_enterprise_organization_extensions.rb
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class MnoEnterprise::DatabaseExtensionGenerator < Rails::Generators::NamedBase
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
3
|
+
|
4
|
+
argument :fields, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
|
5
|
+
|
6
|
+
# Check the class we want to extend exists
|
7
|
+
def check_class_exists
|
8
|
+
klass = "MnoEnterprise::#{class_name}"
|
9
|
+
klass.constantize
|
10
|
+
rescue NameError
|
11
|
+
raise Thor::Error, "The class '#{klass}' does not exist in Maestrano Enterprise"
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_class_is_decorator_ready
|
15
|
+
klass = "MnoEnterprise::Concerns::Models::#{class_name}"
|
16
|
+
klass.constantize
|
17
|
+
rescue NameError
|
18
|
+
raise Thor::Error, "The class '#{class_name}' is not decorator ready. Please extract it to #{klass}."
|
19
|
+
end
|
20
|
+
|
21
|
+
# Check the class we want to extend doesn't exist
|
22
|
+
def check_class_collision
|
23
|
+
@model_name = "MnoEnterprise::#{class_name}Extension"
|
24
|
+
@model_name.constantize rescue nil # To preload class in dev?
|
25
|
+
class_collisions @model_name
|
26
|
+
end
|
27
|
+
|
28
|
+
def generate_extension_model
|
29
|
+
params = "#{@model_name} #{file_name}_uid:string:uniq " + fields.join(' ') + " --no-fixture -t rspec"
|
30
|
+
generate "model", params
|
31
|
+
end
|
32
|
+
|
33
|
+
def generate_mnoe_model
|
34
|
+
template 'model.rb', File.join('app/models/mno_enterprise', "#{file_name}.rb")
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class <%= class_name %> < BaseResource
|
3
|
+
include MnoEnterprise::Concerns::Models::<%= class_name %>
|
4
|
+
|
5
|
+
include MnoEnterprise::DatabaseExtendable
|
6
|
+
|
7
|
+
database_extendable <%= fields.map {|field| ":#{field.split(':').first}"}.join(', ') %>
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/rails/app/app_generator'
|
3
|
+
|
4
|
+
module MnoEnterprise
|
5
|
+
class DummyGenerator < Rails::Generators::Base
|
6
|
+
desc "Creates blank Rails application, installs MNOE"
|
7
|
+
|
8
|
+
class_option :lib_name, default: ''
|
9
|
+
class_option :database, default: ''
|
10
|
+
|
11
|
+
def self.source_paths
|
12
|
+
paths = self.superclass.source_paths
|
13
|
+
paths << File.expand_path('../templates', __FILE__)
|
14
|
+
paths.flatten
|
15
|
+
end
|
16
|
+
|
17
|
+
def clean_up
|
18
|
+
remove_directory_if_exists(dummy_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
PASSTHROUGH_OPTIONS = [
|
22
|
+
:skip_active_record, :skip_javascript, :database, :javascript, :quiet, :pretend, :force, :skip
|
23
|
+
]
|
24
|
+
|
25
|
+
def generate_test_dummy
|
26
|
+
# calling slice on a Thor::CoreExtensions::HashWithIndifferentAccess
|
27
|
+
# object has been known to return nil
|
28
|
+
opts = {}.merge(options).slice(*PASSTHROUGH_OPTIONS)
|
29
|
+
opts[:database] = 'sqlite3' if opts[:database].blank?
|
30
|
+
opts[:force] = true
|
31
|
+
opts[:skip_bundle] = true
|
32
|
+
|
33
|
+
say "Generating dummy Rails application..."
|
34
|
+
invoke Rails::Generators::AppGenerator,
|
35
|
+
[ File.expand_path(dummy_path, destination_root) ], opts
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_dummy_config
|
39
|
+
@lib_name = options[:lib_name]
|
40
|
+
@database = options[:database]
|
41
|
+
|
42
|
+
template "rails/database.yml", "#{dummy_path}/config/database.yml", force: true
|
43
|
+
template "rails/boot.rb.erb", "#{dummy_path}/config/boot.rb", force: true
|
44
|
+
template "rails/application.rb.erb", "#{dummy_path}/config/application.rb", force: true
|
45
|
+
template "rails/routes.rb", "#{dummy_path}/config/routes.rb", force: true
|
46
|
+
template "rails/test-env.rb", "#{dummy_path}/config/environments/test.rb", force: true
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_dummy_clean
|
50
|
+
inside dummy_path do
|
51
|
+
remove_file ".gitignore"
|
52
|
+
remove_file "doc"
|
53
|
+
remove_file "Gemfile"
|
54
|
+
remove_file "lib/tasks"
|
55
|
+
remove_file "app/assets/images/rails.png"
|
56
|
+
remove_file "public/index.html"
|
57
|
+
remove_file "public/robots.txt"
|
58
|
+
remove_file "README"
|
59
|
+
remove_file "test"
|
60
|
+
remove_file "vendor"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
attr :lib_name
|
65
|
+
attr :database
|
66
|
+
|
67
|
+
protected
|
68
|
+
|
69
|
+
def dummy_path
|
70
|
+
ENV['DUMMY_PATH'] || 'spec/dummy'
|
71
|
+
end
|
72
|
+
|
73
|
+
def module_name
|
74
|
+
'Dummy'
|
75
|
+
end
|
76
|
+
|
77
|
+
def application_definition
|
78
|
+
@application_definition ||= begin
|
79
|
+
|
80
|
+
dummy_application_path = File.expand_path("#{dummy_path}/config/application.rb", destination_root)
|
81
|
+
unless options[:pretend] || !File.exists?(dummy_application_path)
|
82
|
+
contents = File.read(dummy_application_path)
|
83
|
+
contents[(contents.index("module #{module_name}"))..-1]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
alias :store_application_definition! :application_definition
|
88
|
+
|
89
|
+
def remove_directory_if_exists(path)
|
90
|
+
remove_dir(path) if File.directory?(path)
|
91
|
+
end
|
92
|
+
|
93
|
+
def gemfile_path
|
94
|
+
'../../../../Gemfile'
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3
|
3
|
+
#
|
4
|
+
# Ensure the SQLite 3 gem is defined in your Gemfile
|
5
|
+
# gem 'sqlite3'
|
6
|
+
#
|
7
|
+
default: &default
|
8
|
+
adapter: sqlite3
|
9
|
+
pool: 5
|
10
|
+
timeout: 5000
|
11
|
+
|
12
|
+
development:
|
13
|
+
<<: *default
|
14
|
+
database: db/development.sqlite3
|
15
|
+
|
16
|
+
test:
|
17
|
+
<<: *default
|
18
|
+
database: db/test.sqlite3
|
19
|
+
|
20
|
+
production:
|
21
|
+
<<: *default
|
22
|
+
database: db/production.sqlite3
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
|
+
|
4
|
+
# The test environment is used exclusively to run your application's
|
5
|
+
# test suite. You never need to work with it otherwise. Remember that
|
6
|
+
# your test database is "scratch space" for the test suite and is wiped
|
7
|
+
# and recreated between test runs. Don't rely on the data there!
|
8
|
+
config.cache_classes = true
|
9
|
+
|
10
|
+
# Do not eager load code on boot. This avoids loading your whole application
|
11
|
+
# just for the purpose of running a single test. If you are using a tool that
|
12
|
+
# preloads Rails for running tests, you may have to set it to true.
|
13
|
+
config.eager_load = false
|
14
|
+
|
15
|
+
# Configure static file server for tests with Cache-Control for performance.
|
16
|
+
config.serve_static_files = true
|
17
|
+
config.static_cache_control = 'public, max-age=3600'
|
18
|
+
|
19
|
+
# Show full error reports and disable caching.
|
20
|
+
config.consider_all_requests_local = true
|
21
|
+
config.action_controller.perform_caching = false
|
22
|
+
|
23
|
+
# Raise exceptions instead of rendering exception templates.
|
24
|
+
config.action_dispatch.show_exceptions = false
|
25
|
+
|
26
|
+
# Disable request forgery protection in test environment.
|
27
|
+
config.action_controller.allow_forgery_protection = false
|
28
|
+
|
29
|
+
# Specify host to use when sending emails
|
30
|
+
config.action_mailer.default_url_options = { host: 'localhost:3000' }
|
31
|
+
|
32
|
+
# Tell Action Mailer not to deliver emails to the real world.
|
33
|
+
# The :test delivery method accumulates sent emails in the
|
34
|
+
# ActionMailer::Base.deliveries array.
|
35
|
+
config.action_mailer.delivery_method = :test
|
36
|
+
|
37
|
+
# Randomize the order test cases are executed.
|
38
|
+
config.active_support.test_order = :random
|
39
|
+
|
40
|
+
# Print deprecation notices to the stderr.
|
41
|
+
config.active_support.deprecation = :stderr
|
42
|
+
|
43
|
+
# Raises error for missing translations
|
44
|
+
# config.action_view.raise_on_missing_translations = true
|
45
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'rails/generators/rails/app/app_generator'
|
2
|
+
|
3
|
+
module MnoEnterprise
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < ::Rails::Generators::Base
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
desc "Description:\n Install Maestrano Enterprise Engine in your application\n\n"
|
8
|
+
|
9
|
+
class_option :skip_rspec, type: :boolean, default: false, desc: 'Skip rspec-rails installation'
|
10
|
+
class_option :skip_sprite, type: :boolean, default: false, desc: 'Skip sprite-factory installation'
|
11
|
+
class_option :skip_factory_girl, type: :boolean, default: false, desc: 'Skip sprite-factory installation'
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
def copy_initializer
|
16
|
+
template "Procfile"
|
17
|
+
template "config/initializers/mno_enterprise.rb"
|
18
|
+
template "config/mno_enterprise_styleguide.yml"
|
19
|
+
end
|
20
|
+
|
21
|
+
def setup_assets
|
22
|
+
if defined?(MnoEnterprise::Frontend) || Rails.env.test?
|
23
|
+
# JavaScript
|
24
|
+
copy_file "javascripts/mno_enterprise_extensions.js", "app/assets/javascripts/mno_enterprise_extensions.js"
|
25
|
+
|
26
|
+
|
27
|
+
# Stylesheets
|
28
|
+
copy_file "stylesheets/main.less_erb", "app/assets/stylesheets/main.less.erb"
|
29
|
+
copy_file "stylesheets/theme.less_erb", "app/assets/stylesheets/theme.less.erb"
|
30
|
+
copy_file "stylesheets/variables.less", "app/assets/stylesheets/variables.less"
|
31
|
+
|
32
|
+
# Require main stylesheet file
|
33
|
+
inject_into_file 'app/assets/stylesheets/application.css', before: " */" do
|
34
|
+
" *= require main\n"
|
35
|
+
end
|
36
|
+
|
37
|
+
# Disable require_tree which breaks the app
|
38
|
+
gsub_file 'app/assets/stylesheets/application.css', /\*= require_tree ./, '* require_tree .'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Inject engine routes
|
43
|
+
def notify_about_routes
|
44
|
+
if (routes_file = destination_path.join('config', 'routes.rb')).file? && (routes_file.read !~ %r{mount\ MnoEnterprise::Engine})
|
45
|
+
mount = %Q{
|
46
|
+
# This line mount Maestrano Enterprise routes in your application under /mnoe.
|
47
|
+
# If you would like to change where this engine is mounted, simply change the :at option to something different
|
48
|
+
#
|
49
|
+
# We ask that you don't use the :as option here, as Mnoe relies on it being the default of "mno_enterprise"
|
50
|
+
mount MnoEnterprise::Engine, at: '/mnoe', as: :mno_enterprise
|
51
|
+
|
52
|
+
}
|
53
|
+
inject_into_file routes_file, mount, after: "Rails.application.routes.draw do\n"
|
54
|
+
end
|
55
|
+
|
56
|
+
unless options[:quiet]
|
57
|
+
say " "
|
58
|
+
say "We added the following line to your application's config/routes.rb file:"
|
59
|
+
say " "
|
60
|
+
say " mount MnoEnterprise::Engine, at: '/mnoe'"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def install_sprite_generator
|
65
|
+
if (defined?(MnoEnterprise::Frontend) || Rails.env.test?) && !options[:skip_sprite]
|
66
|
+
say("\n")
|
67
|
+
@install_sprite = ask_with_default('Would you like to install sprite-factory?')
|
68
|
+
if @install_sprite
|
69
|
+
gem_group :development do
|
70
|
+
gem "chunky_png"
|
71
|
+
gem "sprite-factory"
|
72
|
+
end
|
73
|
+
template "tasks/sprites.rake", "lib/tasks/sprites.rake"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def install_rspec_rails
|
79
|
+
unless options[:skip_rspec]
|
80
|
+
say("\n")
|
81
|
+
@install_rspec = ask_with_default("Would you like to install rspec-rails?")
|
82
|
+
if @install_rspec
|
83
|
+
gem_group :test do
|
84
|
+
gem "rspec-rails"
|
85
|
+
end
|
86
|
+
generate "rspec:install"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def install_factory_girl
|
92
|
+
unless options[:skip_factory_girl]
|
93
|
+
say("\n")
|
94
|
+
@install_facto_girl = ask_with_default("Would you like to install factory_girl_rails?")
|
95
|
+
if @install_facto_girl
|
96
|
+
gem_group :test do
|
97
|
+
gem "factory_girl_rails"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def install_summary
|
104
|
+
unless options[:quiet]
|
105
|
+
say("\n\n")
|
106
|
+
say_status("==> Maestrano Enterprise has been installed ==", nil)
|
107
|
+
say("- You can generate deployment configs by running: 'rails g mno_enterprise:puma_stack'")
|
108
|
+
say("- You can start the server with: 'foreman start'")
|
109
|
+
if @install_sprite =~ /y/i
|
110
|
+
say("\n\n")
|
111
|
+
say("==> Sprite Factory has been installed")
|
112
|
+
say("- Drop your icons in vendor/sprites/icons then run: 'rake assets:resprite'")
|
113
|
+
say("- Add more icons folders to vendor/sprites then modify lib/tasks/sprites.rake")
|
114
|
+
end
|
115
|
+
say("\n\n")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
private
|
120
|
+
# Helper method to quickly convert destination_root to a Pathname for easy file path manipulation
|
121
|
+
def destination_path
|
122
|
+
@destination_path ||= Pathname.new(self.destination_root)
|
123
|
+
end
|
124
|
+
|
125
|
+
# Ask a question with a default answer
|
126
|
+
# Returns a boolean
|
127
|
+
def ask_with_default(message, default = 'yes', color = nil)
|
128
|
+
question = "#{message} (yes/no) [#{default}]"
|
129
|
+
|
130
|
+
valid = false
|
131
|
+
until valid
|
132
|
+
answer = ask(question)
|
133
|
+
answer = default if answer.empty?
|
134
|
+
valid = (answer =~ /\Ay(?:es)?|no?\Z/i)
|
135
|
+
end
|
136
|
+
answer.downcase[0] == ?y
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
web: bundle exec rails s -p 7000
|
@@ -0,0 +1,135 @@
|
|
1
|
+
# require 'mno-enterprise'
|
2
|
+
|
3
|
+
MnoEnterprise.configure do |config|
|
4
|
+
#===============================================
|
5
|
+
# General Configuration
|
6
|
+
#===============================================
|
7
|
+
# Name of your company/application
|
8
|
+
config.app_name = "My Company"
|
9
|
+
|
10
|
+
# Fallback default country.
|
11
|
+
# Used as default in geolocalised fields (e.g.: country, phone number)
|
12
|
+
# config.app_country = 'US'
|
13
|
+
|
14
|
+
# Fallback default currency.
|
15
|
+
# config.app_currency = 'USD'
|
16
|
+
|
17
|
+
#===============================================
|
18
|
+
# Maestrano Enterprise Tenant Authentication
|
19
|
+
#===============================================
|
20
|
+
# Configure your tenant ID
|
21
|
+
config.tenant_id = "my_tenant_id"
|
22
|
+
|
23
|
+
# Configure your tenant Key
|
24
|
+
config.tenant_key = "my_tenant_access_key"
|
25
|
+
|
26
|
+
#===============================================
|
27
|
+
# Emailing
|
28
|
+
#===============================================
|
29
|
+
# Mandrill API key for sending email
|
30
|
+
# Defaulted to Maestrano Enterprise demo account
|
31
|
+
# config.mandrill_key = 'some-mandrill-api-key'
|
32
|
+
|
33
|
+
# Support email address
|
34
|
+
config.support_email = 'support@example.com'
|
35
|
+
|
36
|
+
# Default sender for system generated emails
|
37
|
+
config.default_sender_name = 'My Company'
|
38
|
+
config.default_sender_email = 'no-reply@example.com'
|
39
|
+
|
40
|
+
#===============================================
|
41
|
+
# External Routes
|
42
|
+
#===============================================
|
43
|
+
# URL of the Terms and Conditions page.
|
44
|
+
# Used on Devise Registration pages
|
45
|
+
# config.router.terms_url = 'http://mywebsite.com/terms'
|
46
|
+
|
47
|
+
# After sign out URL. Default to the root_path
|
48
|
+
# config.router.after_sign_out_url = 'http://mywebsite.com/'
|
49
|
+
|
50
|
+
#===============================================
|
51
|
+
# Optional Modules
|
52
|
+
#===============================================
|
53
|
+
# Angular CSRF protection - Only needed if the AngularJS App
|
54
|
+
# is not served through Rails asset pipeline
|
55
|
+
# config.include_angular_csrf = false
|
56
|
+
|
57
|
+
#===============================================
|
58
|
+
# Third Party Plugins
|
59
|
+
#===============================================
|
60
|
+
# Google Tag Manager
|
61
|
+
# config.google_tag_container = nil
|
62
|
+
|
63
|
+
#===============================================
|
64
|
+
# API Configuration
|
65
|
+
#===============================================
|
66
|
+
# ==> Maestrano Enterprise API Configuration
|
67
|
+
# Configure the API host
|
68
|
+
# config.mno_api_host = "https://api-enterprise.maestrano.com"
|
69
|
+
|
70
|
+
# Configure the API root path
|
71
|
+
# config.mno_api_root_path = "/v1"
|
72
|
+
|
73
|
+
#===============================================
|
74
|
+
# Impac! Reporting Configuration
|
75
|
+
#===============================================
|
76
|
+
# ==> Impac! API Configuration
|
77
|
+
# Configure the API host
|
78
|
+
# config.impac_api_host = "https://api-impac-uat.maestrano.io"
|
79
|
+
|
80
|
+
# Configure the API root path
|
81
|
+
# config.impac_api_root_path = "/api"
|
82
|
+
|
83
|
+
#===============================================
|
84
|
+
# Marketplace Listing
|
85
|
+
#===============================================
|
86
|
+
# List of applications that should be offered on the marketplace
|
87
|
+
# Set to nil to offer everything
|
88
|
+
# config.marketplace_listing = nil
|
89
|
+
# config.marketplace_listing = [
|
90
|
+
# "allocpsa",
|
91
|
+
# "boxsuite",
|
92
|
+
# "bugzilla",
|
93
|
+
# "collabtive",
|
94
|
+
# "dolibarr",
|
95
|
+
# "drupal",
|
96
|
+
# "egroupware",
|
97
|
+
# "eventbrite",
|
98
|
+
# "feng-office",
|
99
|
+
# "front-accounting",
|
100
|
+
# "group-office",
|
101
|
+
# "hummingbirdshare",
|
102
|
+
# "interleave",
|
103
|
+
# "jenkins",
|
104
|
+
# "joomla",
|
105
|
+
# "limesurvey",
|
106
|
+
# "mantisbt",
|
107
|
+
# "magento",
|
108
|
+
# "megaventory",
|
109
|
+
# "moodle",
|
110
|
+
# "myob",
|
111
|
+
# "office-365",
|
112
|
+
# "opendocman",
|
113
|
+
# "openerp",
|
114
|
+
# "openx",
|
115
|
+
# "orangehrm",
|
116
|
+
# "pentaho-bi",
|
117
|
+
# "phreedom",
|
118
|
+
# "plandora",
|
119
|
+
# "prestashop",
|
120
|
+
# "processmaker",
|
121
|
+
# "projectpier",
|
122
|
+
# "quickbooks",
|
123
|
+
# "ranqx",
|
124
|
+
# "receipt-bank",
|
125
|
+
# "signmee",
|
126
|
+
# "simpleinvoices",
|
127
|
+
# "so-planning",
|
128
|
+
# "spotlight-reporting",
|
129
|
+
# "sugarcrm",
|
130
|
+
# "timetrex",
|
131
|
+
# "vtiger6",
|
132
|
+
# "xero",
|
133
|
+
# "wordpress"
|
134
|
+
# ]
|
135
|
+
end
|