multi_ar 1.0.0 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3754772cf591a147943b8cfb7b83c85254872110
4
- data.tar.gz: 620350cf731cc914a5620248dbe1d632406bd34b
3
+ metadata.gz: c01f5dbedaf04057f1edbf8402963aa6500ef0d3
4
+ data.tar.gz: f97e3417a9cdfe73af3549008cc47df54055e472
5
5
  SHA512:
6
- metadata.gz: 5af7a1f88b87c54891429d9f47cff6a4c198c5c50f85c7a47cae606417080fd1f5dc78adafd37ef3fe4515aa035657f5895c5e92fa6f59178f1986d18b327898
7
- data.tar.gz: f89187f075e2ad595d6d6ea60e12c98888ef0119ef6481427d100998e5a7635ad706a29b54616f9415bee763715498ed448f6ab7053640d944c94709e2bf3d31
6
+ metadata.gz: 38d0da40c514cdd74d850d0b2b7116b9707f6cf7f66d507e112848592cd5ecc3f83d495036aa09e518045471608a31a5b6934ade11dd584360fcfd4bfe11f6da
7
+ data.tar.gz: 663af5abc03f337a16ad458817ceb2fbe8cdf12b9514d5ef008861e6a668c85c959ad58bbe7d7ac9a840511afbb88fa6b176df65b3fba1478522a92397808fc1
checksums.yaml.gz.sig CHANGED
Binary file
@@ -11,6 +11,9 @@ require "erb"
11
11
  require "yaml"
12
12
 
13
13
  module MultiAR
14
+
15
+ # @api private
16
+ # Database functionality class.
14
17
  class Database
15
18
 
16
19
  # @todo test if this @@initialized thingy actually works, I’m not sure how it in practice works
@@ -9,24 +9,21 @@ module MultiAR
9
9
 
10
10
  # An utility to ease creation of executable using multi database ActiveRecord
11
11
  # through command line interface.
12
- #
13
- # Usage:
14
- #
15
- # TODO: write usage
16
- # TODO: mention this usage in README.md too
17
12
  class Interface
18
13
 
19
14
  # Options that will be enabled.
20
15
  #
21
16
  # Options supported by this system are:
22
- # - config
23
- # - db_config
24
- # - dry
25
- # - environment
26
- # - verbose
27
- # - databases
17
+ # - config # `true` or `String`
18
+ # - db_config # `true` or `String`
19
+ # - dry # boolean
20
+ # - environment # `true` or `String`
21
+ # - verbose # boolean
22
+ # - databases # `true` or `Array`
28
23
  #
29
- # environment is enabled by default, rest are disabled.
24
+ # If value is `true`, an option will be added to CLI interface. If the value is something else, the option will be populated by this value instead.
25
+ #
26
+ # `environment` option is enabled by default, rest are disabled.
30
27
  attr_accessor :options
31
28
 
32
29
  # Version shown with --version flag on CLI
@@ -35,9 +32,6 @@ module MultiAR
35
32
  # Description of the application show in usage texts on CLI
36
33
  attr_accessor :description
37
34
 
38
- # Array of databases that will be used insted if none have not been passed through CLI.
39
- attr_accessor :databases
40
-
41
35
  # If set to true, migration framework and other Rake related functionality will be enabled.
42
36
  attr_accessor :migration_framework
43
37
 
@@ -51,7 +45,7 @@ module MultiAR
51
45
  #
52
46
  # This is used in --init.
53
47
  #
54
- # TODO: what for this actually is? Write an example or just tell what for this should be used.
48
+ # @todo what for this actually is? Write an example or just tell what for this should be used.
55
49
  attr_accessor :dependencies
56
50
 
57
51
  def initialize
@@ -61,19 +55,19 @@ module MultiAR
61
55
  end
62
56
 
63
57
  # @note Consumes ARGV, create copy of it if you need it for something.
64
- # TODO: hardcode shorthands
58
+ # @todo hardcode shorthands
65
59
  def cli
66
60
  p = Trollop::Parser.new
67
61
  p.version @version if @version
68
62
  p.banner @description if @description
69
63
  p.opt "init", "Create stub environment with configuration and database.yaml", type: :string
70
- p.opt "databases", "List of databases to perform operations", type: :strings if @options["databases"]
71
- p.opt "db_config", "Path to database config file", type: :string, default: "config/database.yaml" if @options["db_config"]
72
- p.opt "config", "Path to MultiAR framework config file", type: :string, default: "config/settings.yaml" if @options["config"]
73
- p.opt "dry", "Run the program without doing anything. Useful for debugging with -v", type: :flag if @options["dry"]
64
+ p.opt "databases", "List of databases to perform operations", type: :strings if @options["databases"] == true
65
+ p.opt "db_config", "Path to database config file", type: :string, default: "config/database.yaml" if @options["db_config"] == true
66
+ p.opt "config", "Path to MultiAR framework config file", type: :string, default: "config/settings.yaml" if @options["config"] == true
67
+ p.opt "dry", "Run the program without doing anything. Useful for debugging with -v", type: :flag if @options["dry"] == true
74
68
  p.opt "environment", "The environment to use. Corresponds to database config name " +
75
69
  "(environment for foo_development is “development”).", type: :string, default: "development"
76
- p.opt "verbose", "Be verbose", type: :flag if @options["verbose"]
70
+ p.opt "verbose", "Be verbose", type: :flag if @options["verbose"] == true
77
71
 
78
72
  if @migration_framework == true
79
73
  p.opt "all_rake_tasks", "List all Rake tasks, not only commented ones", short: "A", type: :flag
@@ -99,10 +93,16 @@ module MultiAR
99
93
  result
100
94
  end
101
95
 
96
+ @options.each do |key, value|
97
+ next if value == true
98
+ # Not bothering to do checks as we just take the intended values, and not looping the array otherwise
99
+ opts[key] = value
100
+ end
101
+
102
102
  bootstrap opts if opts["init"] # Bootstrap will exit after execution; in that case nothing after this will be run.
103
103
 
104
104
  raise "--config must be path to valid file" if @options["config"] and not File.exist? opts["config"]
105
- raise "config/database.yaml seems to be missing" if @options["db_config"] and not File.exist? opts["db_config"]
105
+ raise "Database config #{opts["db_config"]} seems to be missing" if @options["db_config"] and not File.exist? opts["db_config"]
106
106
 
107
107
  @opts = opts
108
108
 
@@ -110,7 +110,7 @@ module MultiAR
110
110
 
111
111
  # Then run Rake tasks as requested
112
112
 
113
- return if not @migration_framework # TODO: I think there should be much more fine grained control for this
113
+ return opts if not @migration_framework # TODO: I think there should be much more fine grained control for this
114
114
 
115
115
  if opts["tasks"] || opts["all_rake_tasks"]
116
116
  @multi_ar.list_tasks all_rake_tasks: opts["all_rake_tasks"]
@@ -132,14 +132,12 @@ module MultiAR
132
132
  @multi_ar = MultiAR.new config: @opts["config"],
133
133
  databases: @opts["databases"],
134
134
  db_config: @opts["db_config"],
135
- environment: @opts["environment"]
136
-
137
- MultiAR.add_migration_dir @opts["migration_dir"]
135
+ environment: @opts["environment"],
136
+ migration_dirs: [ @opts["migration_dir"] ]
138
137
  end
139
138
 
140
139
  # @note This method will always quit the application or raise another exception for errors. Catch SystemExit if that’s not good for you.
141
140
  def bootstrap opts
142
- opts["databases"] ||= @databases
143
141
  raise "--databases must be given when bootstrapping." unless opts["databases"]
144
142
  raise "#{opts["init"]} already exists" if File.exist? opts["init"]
145
143
 
@@ -1,6 +1,7 @@
1
1
 
2
2
  require "rake"
3
3
 
4
+ # @api private
4
5
  # Extension to Rake to provide rename task.
5
6
  module Rake
6
7
  # Extension to Rake to provide rename task.
@@ -2,6 +2,8 @@
2
2
  require "rails/generators/active_record/migration/migration_generator"
3
3
  require "active_record/tasks/database_tasks"
4
4
 
5
+
6
+ # @api private
5
7
  module ActiveRecordMigrations
6
8
  module Generators
7
9
  class MigrationGenerator < ::ActiveRecord::Generators::MigrationGenerator
@@ -9,6 +9,7 @@ require "active_record/tasks/database_tasks"
9
9
 
10
10
  require_relative "migration_generator"
11
11
 
12
+ # @api private
12
13
  module Rake
13
14
 
14
15
  # Utility that defines Rake tasks of MultiAR
@@ -1,4 +1,4 @@
1
1
 
2
2
  module MultiAR
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
data/lib/multi_ar.rb CHANGED
@@ -5,6 +5,7 @@ require_relative "multi_ar/rake/tasks"
5
5
 
6
6
  require_relative "multi_ar/database"
7
7
 
8
+ # Main module.
8
9
  module MultiAR
9
10
 
10
11
  # Base of MultiAR gem.
@@ -16,6 +17,8 @@ module MultiAR
16
17
  attr_reader :db_config
17
18
  attr_reader :environment
18
19
 
20
+ # @api private
21
+ # This will always be overridden, when MultiAR is initialized. Don’t try to do any funny logic with this.
19
22
  @@migration_dirs = []
20
23
 
21
24
  class << self
@@ -26,7 +29,7 @@ module MultiAR
26
29
 
27
30
  # @param databases array of available databases
28
31
  # @todo config file is overriding parameters passed here... I think it should be other way around, but need more custom logic for that :/
29
- def initialize databases:, environment: "development", config: "config/multi_ar.yaml", db_config: "config/database.yaml"
32
+ def initialize databases:, environment: "development", config: "config/multi_ar.yaml", db_config: "config/database.yaml", migration_dirs: []
30
33
 
31
34
  # first load config
32
35
  if not config.nil? and File.exist? config
@@ -45,6 +48,7 @@ module MultiAR
45
48
  @databases = databases
46
49
  @db_config = db_config
47
50
  @environment = environment
51
+ @@migration_dirs = migration_dirs unless migration_dirs.empty? # This takes care of that it will only be overridden if there is any given values, making default configs work
48
52
 
49
53
  Database.initialize db_config: db_config
50
54
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_ar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samu Voutilainen
@@ -29,7 +29,7 @@ cert_chain:
29
29
  Ws73WZ+F+DOnfopIMUaeYUzKyUG+59p17ls//xzTouiLjcC9ee5ZaC9e+TzYsp4t
30
30
  ofnwRrqEHVW+zRWs/VIwm70F2Jnl5eSc3MjyhpWIC0eGFXtBY1XYCrHeCdQ=
31
31
  -----END CERTIFICATE-----
32
- date: 2015-10-06 00:00:00.000000000 Z
32
+ date: 2015-10-15 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: trollop
metadata.gz.sig CHANGED
Binary file