erp_base_erp_svcs 3.0.7 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/app/models/category.rb +2 -1
  2. data/app/models/category_classification.rb +2 -0
  3. data/app/models/compass_ae_instance.rb +1 -1
  4. data/app/models/contact.rb +34 -32
  5. data/app/models/contact_purpose.rb +6 -4
  6. data/app/models/contact_type.rb +3 -1
  7. data/app/models/currency.rb +6 -4
  8. data/app/models/descriptive_asset.rb +2 -0
  9. data/app/models/email_address.rb +2 -0
  10. data/app/models/geo_country.rb +2 -0
  11. data/app/models/geo_zone.rb +2 -0
  12. data/app/models/individual.rb +2 -0
  13. data/app/models/iso_country_code.rb +0 -1
  14. data/app/models/money.rb +1 -0
  15. data/app/models/note.rb +2 -0
  16. data/app/models/note_type.rb +2 -0
  17. data/app/models/organization.rb +2 -0
  18. data/app/models/party.rb +4 -3
  19. data/app/models/party_relationship.rb +6 -5
  20. data/app/models/party_role.rb +7 -5
  21. data/app/models/phone_number.rb +2 -0
  22. data/app/models/postal_address.rb +2 -0
  23. data/app/models/relationship_type.rb +7 -5
  24. data/app/models/role_type.rb +2 -0
  25. data/app/models/valid_note_type.rb +2 -0
  26. data/app/models/view_type.rb +2 -0
  27. data/db/data_migrations/20110913145838_setup_compass_ae_instance.rb +1 -1
  28. data/db/migrate/20080805000020_base_erp_services.rb +222 -222
  29. data/lib/erp_base_erp_svcs/engine.rb +2 -0
  30. data/lib/erp_base_erp_svcs/extensions/active_record/migration.rb +39 -0
  31. data/lib/erp_base_erp_svcs/extensions.rb +1 -2
  32. data/lib/erp_base_erp_svcs/version.rb +2 -2
  33. data/lib/erp_base_erp_svcs.rb +15 -15
  34. data/lib/tasks/erp_base_erp_svcs_tasks.rake +58 -23
  35. data/spec/dummy/config/application.rb +6 -0
  36. data/spec/dummy/config/environments/spec.rb +3 -0
  37. data/spec/dummy/db/data_migrations/20110525001935_add_usd_currency.erp_base_erp_svcs.rb +12 -0
  38. data/spec/dummy/db/data_migrations/20110609150135_add_iso_codes.erp_base_erp_svcs.rb +19 -0
  39. data/spec/dummy/db/data_migrations/20110913145838_setup_compass_ae_instance.erp_base_erp_svcs.rb +12 -0
  40. data/spec/dummy/db/migrate/20130107214414_base_erp_services.erp_base_erp_svcs.rb +461 -0
  41. data/spec/dummy/db/schema.rb +383 -0
  42. data/spec/dummy/db/spec.sqlite3 +0 -0
  43. data/spec/dummy/log/spec.log +17576 -0
  44. data/spec/models/email_address_spec.rb +1 -1
  45. data/spec/models/party_spec.rb +19 -19
  46. data/spec/spec_helper.rb +14 -5
  47. metadata +70 -149
  48. data/db/migrate/20110913145329_create_compass_ae_instance.rb +0 -15
  49. data/db/migrate/upgrade/20110907171257_add_notes.rb +0 -63
  50. data/lib/erp_base_erp_svcs/extensions/active_record/data_migrator.rb +0 -46
  51. data/lib/erp_base_erp_svcs/extensions/active_record/migrator.rb +0 -76
@@ -0,0 +1,39 @@
1
+ ActiveRecord::Migration.class_eval do
2
+ def copy(destination, sources, options = {})
3
+ copied = []
4
+
5
+ FileUtils.mkdir_p(destination) unless File.exists?(destination)
6
+
7
+ destination_migrations = ActiveRecord::Migrator.migrations(destination)
8
+ last = destination_migrations.last
9
+ sources.each do |scope, path|
10
+ source_migrations = ActiveRecord::Migrator.migrations(path)
11
+
12
+ source_migrations.each do |migration|
13
+ source = File.read(migration.filename)
14
+ source = "# This migration comes from #{scope} (originally #{migration.version})\n#{source}"
15
+
16
+ if duplicate = destination_migrations.detect { |m| m.name == migration.name }
17
+ if options[:refresh] && duplicate.scope == scope.to_s
18
+ Dir.glob(File.join(destination,"*_#{migration.name.underscore}.#{scope.to_s}.rb")).each { |f| puts "Removing old migration #{migration.name}"; File.delete(f) }
19
+ elsif options[:on_skip] && duplicate.scope != scope.to_s
20
+ options[:on_skip].call(scope, migration)
21
+ end
22
+ next unless options[:refresh]
23
+ end
24
+
25
+ migration.version = next_migration_number(last ? last.version + 1 : 0).to_i unless options[:preserve_timestamp]
26
+ new_path = File.join(destination, "#{migration.version}_#{migration.name.underscore}.#{scope}.rb")
27
+ old_path, migration.filename = migration.filename, new_path
28
+ last = migration
29
+
30
+ File.open(migration.filename, "w") { |f| f.write source }
31
+ copied << migration
32
+ options[:on_copy].call(scope, migration, old_path) if options[:on_copy]
33
+ destination_migrations << migration
34
+ end
35
+ end
36
+
37
+ copied
38
+ end
39
+ end
@@ -11,8 +11,7 @@ require 'erp_base_erp_svcs/extensions/active_record/has_notes'
11
11
  require 'erp_base_erp_svcs/extensions/active_record/acts_as_note_type'
12
12
  require 'erp_base_erp_svcs/extensions/active_record/is_describable'
13
13
  require 'erp_base_erp_svcs/extensions/active_record/has_contact'
14
- require 'erp_base_erp_svcs/extensions/active_record/migrator'
15
- require 'erp_base_erp_svcs/extensions/active_record/data_migrator'
16
14
  require 'erp_base_erp_svcs/extensions/active_record/sti_instantiation'
17
15
  require 'erp_base_erp_svcs/extensions/active_record/to_hash'
16
+ require 'erp_base_erp_svcs/extensions/active_record/migration'
18
17
 
@@ -1,8 +1,8 @@
1
1
  module ErpBaseErpSvcs
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
- MINOR = 0
5
- TINY = 7
4
+ MINOR = 1
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
8
8
  end
@@ -6,13 +6,8 @@ require "erp_base_erp_svcs/non_escape_json_string"
6
6
 
7
7
  module ErpBaseErpSvcs
8
8
  class << self
9
- def setup_compass_ae_callback(config, engine, &block)
10
- config.before_initialize do
11
- callback = (Rails.application.config.cache_classes ? 'after_initialize' : 'to_prepare')
12
- config.send(callback) do
13
- block.call(engine)
14
- end
15
- end
9
+ def determine_callback
10
+ (Rails.env == 'development') ? 'to_prepare' : 'after_initialize'
16
11
  end
17
12
 
18
13
  def mount_compass_ae_engines(routes)
@@ -22,15 +17,15 @@ module ErpBaseErpSvcs
22
17
  end
23
18
 
24
19
  def register_as_compass_ae_engine(config, engine)
25
- setup_compass_ae_callback(config, engine) do |engine|
26
- ErpBaseErpSvcs.load_compass_ae_engine(engine)
20
+ config.send(ErpBaseErpSvcs.determine_callback) do
21
+ ErpBaseErpSvcs.load_compass_ae_engine(engine, config)
27
22
  end
28
23
  end
29
24
 
30
- def load_compass_ae_engine(engine)
25
+ def load_compass_ae_engine(engine, config)
31
26
  Rails.application.config.erp_base_erp_svcs.compass_ae_engines << engine unless Rails.application.config.erp_base_erp_svcs.compass_ae_engines.include?(engine)
32
27
  load_compass_ae_extensions(engine)
33
- load_root_compass_ae_framework_extensions
28
+ load_root_compass_ae_framework_extensions(config)
34
29
  end
35
30
 
36
31
  #forces rails to reload model extensions and framework extensions
@@ -101,14 +96,19 @@ module ErpBaseErpSvcs
101
96
  end
102
97
  end
103
98
 
104
- def load_root_compass_ae_framework_extensions
105
- Dir.glob(File.join(Rails.root,"lib/extensions/compass_ae/**/*.rb")).each do |file|
106
- load file
99
+ def load_root_compass_ae_framework_extensions(config)
100
+ config.send(ErpBaseErpSvcs.determine_callback) do
101
+ Dir.glob(File.join(Rails.root,"lib/extensions/compass_ae/**/*.rb")).each do |file|
102
+ load file
103
+ end
107
104
  end
105
+
108
106
  end
109
107
 
110
108
  end
111
109
  end
112
110
 
113
111
  #load the engine after this module is defined
114
- require "erp_base_erp_svcs/engine"
112
+ require "erp_base_erp_svcs/engine"
113
+
114
+
@@ -1,36 +1,72 @@
1
- Rake::Task["db:migrate"].clear_actions
1
+ require 'fileutils'
2
2
 
3
- namespace :db do
4
- task :migrate => :environment do
5
- ActiveRecord::Migrator.prepare_migrations
6
- Rake::Task["db:migrate:original_migrate"].reenable
7
- Rake::Task["db:migrate:original_migrate"].invoke
8
- ActiveRecord::Migrator.cleanup_migrations
3
+ #redefine copy engine migrations rake task
4
+ Rake::Task["railties:install:migrations"].clear
5
+
6
+ namespace :railties do
7
+ namespace :install do
8
+ # desc "Copies missing migrations from Railties (e.g. plugins, engines). You can specify Railties to use with FROM=railtie1,railtie2"
9
+ task :migrations => :'db:load_config' do
10
+ to_load = ENV['FROM'].blank? ? :all : ENV['FROM'].split(",").map {|n| n.strip }
11
+ #added to allow developer to perserve timestamps
12
+ preserve_timestamp = ENV['PRESERVE_TIMESTAMPS'].blank? ? false : (ENV['PRESERVE_TIMESTAMPS'].to_s.downcase == "true")
13
+ #refresh will replace migrations from engines
14
+ refresh = ENV['REFRESH'].blank? ? false : (ENV['REFRESH'].to_s.downcase == "true")
15
+ railties = ActiveSupport::OrderedHash.new
16
+ Rails.application.railties.all do |railtie|
17
+ next unless to_load == :all || to_load.include?(railtie.railtie_name)
18
+
19
+ if railtie.respond_to?(:paths) && (path = railtie.paths['db/migrate'].first)
20
+ railties[railtie.railtie_name] = path
21
+ end
22
+ end
23
+
24
+ on_skip = Proc.new do |name, migration|
25
+ puts "NOTE: Migration #{migration.basename} from #{name} has been skipped. Migration with the same name already exists."
26
+ end
27
+
28
+ on_copy = Proc.new do |name, migration, old_path|
29
+ puts "Copied migration #{migration.basename} from #{name}"
30
+ end
31
+
32
+ ActiveRecord::Migration.copy(ActiveRecord::Migrator.migrations_paths.first, railties,
33
+ :on_skip => on_skip, :on_copy => on_copy, :preserve_timestamp => preserve_timestamp, :refresh => refresh)
34
+ end
9
35
  end
36
+ end
10
37
 
38
+ namespace :db do
11
39
  namespace :migrate do
12
-
40
+
13
41
  desc "list pending migrations"
14
42
  task :list_pending => :environment do
15
- ActiveRecord::Migrator.prepare_migrations
16
43
  pending_migrations = ActiveRecord::Migrator.new('up', 'db/migrate/').pending_migrations.collect{|item| File.basename(item.filename)}
17
44
  puts "================Pending Migrations=========="
18
45
  puts pending_migrations
19
46
  puts "============================================"
20
- ActiveRecord::Migrator.cleanup_migrations
21
- end
22
-
23
- desc "original migrate"
24
- task :original_migrate do
25
- ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
26
- ActiveRecord::Migrator.migrate("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
27
- Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
28
47
  end
29
-
48
+
30
49
  end#migrate
31
50
  end#db
32
51
 
33
52
  namespace :compass_ae do
53
+ namespace :install do
54
+ desc "Install all CompassAE schema migrations"
55
+ task :migrations => :environment do
56
+ compass_ae_railties = Rails.application.config.erp_base_erp_svcs.compass_ae_engines.collect{|e| "#{e.name.split("::").first.underscore}"}.join(',')
57
+ task = "railties:install:migrations"
58
+ ENV['FROM'] = compass_ae_railties
59
+ Rake::Task[task].invoke
60
+ end #migrations
61
+
62
+ desc "Install all CompassAE data migrations"
63
+ task :data_migrations => :environment do
64
+ compass_ae_railties = Rails.application.config.erp_base_erp_svcs.compass_ae_engines.collect{|e| "#{e.name.split("::").first.underscore}"}.join(',')
65
+ task = "railties:install:data_migrations"
66
+ ENV['FROM'] = compass_ae_railties
67
+ Rake::Task[task].invoke
68
+ end #data_migrations
69
+ end #install
34
70
 
35
71
  desc "Upgrade you installation of Compass AE"
36
72
  task :upgrade => :environment do
@@ -46,14 +82,13 @@ namespace :compass_ae do
46
82
 
47
83
  ActiveRecord::Migrator.cleanup_upgrade_migrations
48
84
  RussellEdge::DataMigrator.cleanup_upgrade_migrations
49
- rescue Exception=>ex
85
+ rescue Exception => ex
50
86
  ActiveRecord::Migrator.cleanup_migrations
51
87
  ActiveRecord::Migrator.cleanup_upgrade_migrations
52
88
  RussellEdge::DataMigrator.cleanup_upgrade_migrations
53
89
 
54
90
  puts ex.inspect
55
91
  puts ex.backtrace
56
- end
57
- end
58
-
59
- end
92
+ end #handle exceptions
93
+ end #upgrade
94
+ end #compass_ae
@@ -37,6 +37,12 @@ module Dummy
37
37
 
38
38
  # Enable the asset pipeline
39
39
  config.assets.enabled = true
40
+
41
+ # Enforce whitelist mode for mass assignment.
42
+ # This will create an empty whitelist of attributes available for mass-assignment for all models
43
+ # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
44
+ # parameters by using an attr_accessible or attr_protected declaration.
45
+ config.active_record.whitelist_attributes = true
40
46
  end
41
47
  end
42
48
 
@@ -1,6 +1,9 @@
1
1
  Dummy::Application.configure do
2
2
  # Settings specified here will take precedence over those in config/application.rb
3
3
 
4
+ # Raise exception on mass assignment protection for Active Record models
5
+ config.active_record.mass_assignment_sanitizer = :strict
6
+
4
7
  # In the development environment your application's code is reloaded on
5
8
  # every request. This slows down response time but is perfect for development
6
9
  # since you don't have to restart the web server when you make code changes.
@@ -0,0 +1,12 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110525001935)
2
+ class AddUsdCurrency
3
+
4
+ def self.up
5
+ Currency.create(:name => 'US Dollar', :internal_identifier => 'USD', :major_unit_symbol => "$")
6
+ end
7
+
8
+ def self.down
9
+ Currency.usd.destroy
10
+ end
11
+
12
+ end
@@ -0,0 +1,19 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110609150135)
2
+ require 'yaml'
3
+
4
+ class AddIsoCodes
5
+
6
+ def self.up
7
+ #find the erp_base_erp_svcs engine
8
+ engine_path = Rails::Application::Railties.engines.find{|item| item.engine_name == 'erp_base_erp_svcs'}.config.root.to_s
9
+
10
+ GeoCountry.load_from_file(File.join(engine_path,'db/data_sets/geo_countries.yml'))
11
+ GeoZone.load_from_file(File.join(engine_path,'db/data_sets/geo_zones.yml'))
12
+ end
13
+
14
+ def self.down
15
+ GeoCountry.delete_all
16
+ GeoZone.delete_all
17
+ end
18
+
19
+ end
@@ -0,0 +1,12 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110913145838)
2
+ class SetupCompassAeInstance
3
+
4
+ def self.up
5
+ CompassAeInstance.create(version: 3.1)
6
+ end
7
+
8
+ def self.down
9
+ #remove data here
10
+ end
11
+
12
+ end