runways 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 014736e4cadc92a73b487d4be26069172b76fce7186c1792572cc007c3d2b62f
4
- data.tar.gz: fbe629b06c33d3ba417cb3cf016a52e62fff966ef15d7ad57c2261db6bfae0d4
3
+ metadata.gz: 462747751a101183cf479cd462cf8a924929df86b323b9ad0b19844e1f4e537b
4
+ data.tar.gz: 4eeb8da232f3bb589b6c77de475c9f98d55635c23156c97e167d8f1eee064434
5
5
  SHA512:
6
- metadata.gz: 50efeeab5455c27fdd0328d7f8bc43fd3a25c2546899059274118c1e2066f6fb54c48de382c9803b93843d476419bb90f936710b73a7295b16a2f235c885aec1
7
- data.tar.gz: d579eabbf5c1ae7478127bcbf35966de593fb0cb7fbcfdea6af82512743a7dc94c2305ada06dd02bb3be4a4ef21bf1130b6de1d10ae595995f2ebc842574c0b4
6
+ metadata.gz: 0f6a3e1cd8862c1d4ef8bd2479960c890d0dff68f684949f08059c68bcafd0509a337f566508cfdd70b0d756462bc2a02e2f0a9b0e8e46bcceaab5ab1e385597
7
+ data.tar.gz: 44e530f76eb06b082d2911331ab18de6e9a71ab89f90840276c59d7c2c5f635f4ac9729a1e291f36aea639766116e9467a508067a6154eaae91c9c5d9e20cbee
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- runways (0.1.1)
4
+ runways (0.1.2)
5
5
  activerecord (~> 5.2)
6
6
  grpc (~> 1.16)
7
7
  grpc-tools (~> 1.16)
data/README.md CHANGED
@@ -31,5 +31,5 @@ The gem is available as open source under the terms of the [MIT License](https:/
31
31
  Everyone interacting in the Runways project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/runways/blob/master/CODE_OF_CONDUCT.md).
32
32
 
33
33
  ## TODO
34
- - [ ] Setup rake tasks for active record migrations
34
+ - [*] Setup rake tasks for active record migrations
35
35
  - [ ] Use ActiveRecord generators to handle ActiveRecord related tasks ( ex: generate migration, migrate, rollback )
@@ -15,11 +15,16 @@ class AppStructure < Thor::Group
15
15
  models_directory = app_directory + "/models"
16
16
  controller_directory = app_directory + "/controllers"
17
17
  db_directory = root_directory + "/db"
18
+ migration_directory = db_directory + "/migrate"
18
19
  lib_directory = root_directory + "/lib"
20
+ tasks_directory = lib_directory + "/tasks"
21
+ config_directory = root_directory + "/config"
19
22
 
20
23
  create_following_dirs([
21
- root_directory, app_directory, db_directory,
22
- models_directory, controller_directory, lib_directory,
24
+ root_directory, app_directory, config_directory,
25
+ lib_directory, tasks_directory,
26
+ models_directory, controller_directory,
27
+ db_directory, migration_directory,
23
28
  ])
24
29
  end
25
30
 
@@ -32,6 +37,14 @@ class AppStructure < Thor::Group
32
37
  template("templates/gemfile.tt", "#{name}/Gemfile")
33
38
  end
34
39
 
40
+ def generate_db_rake_file
41
+ template("templates/db_rake.tt", "#{name}/lib/tasks/db.rake")
42
+ end
43
+
44
+ def generate_rake_file
45
+ template("templates/rakefile.tt", "#{name}/Rakefile")
46
+ end
47
+
35
48
  def generate_application_record
36
49
  template(
37
50
  "templates/application_record.tt",
@@ -60,6 +73,10 @@ class AppStructure < Thor::Group
60
73
  )
61
74
  end
62
75
 
76
+ def generate_db_config_file
77
+ template("templates/db_config.tt", "#{name}/config/db_config.rb")
78
+ end
79
+
63
80
  private
64
81
  def create_following_dirs(dir_paths)
65
82
  dir_paths.each do |dir_path|
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DbConfig
4
+ def self.config
5
+ {
6
+ adapter: '',
7
+ host: '',
8
+ username: '',
9
+ password: '',
10
+ database: '',
11
+ pool: '',
12
+ timeout: '',
13
+ reconnect: true
14
+ }
15
+ end
16
+ end
17
+
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+ require './config/db_config'
3
+
4
+ namespace :db do
5
+ def establish_connection
6
+ ActiveRecord::Base.establish_connection(DbConfig.config)
7
+ end
8
+
9
+ def establish_admin_connection
10
+ ActiveRecord::Base.establish_connection(
11
+ DbConfig.config.except(:database)
12
+ )
13
+ end
14
+
15
+ desc 'Create a database'
16
+ task :create do
17
+ establish_admin_connection
18
+ ActiveRecord::Base.connection.create_database(
19
+ DbConfig.config.fetch(:database)
20
+ )
21
+ Rake::Task['db:update_schema'].invoke
22
+ end
23
+
24
+ desc 'Drop database'
25
+ task :drop do
26
+ establish_admin_connection
27
+ ActiveRecord::Base.connection.drop_database(
28
+ DbConfig.config.fetch(:database)
29
+ )
30
+ end
31
+
32
+ desc 'Update Schema'
33
+ task :update_schema do
34
+ establish_connection
35
+ ActiveRecord::SchemaDumper.dump(
36
+ ActiveRecord::Base.connection,
37
+ File.new('schema.rb', 'w')
38
+ )
39
+ end
40
+
41
+ desc 'Migrate the database'
42
+ task :migrate do
43
+ establish_connection
44
+ ActiveRecord::Migrator.migrate('db/migrate/')
45
+ Rake::Task['db:update_schema'].execute
46
+ puts 'Database migrated.'
47
+ end
48
+
49
+ desc 'Rollback the previous migration'
50
+ task :rollback do
51
+ establish_connection
52
+ ActiveRecord::Migrator.rollback('db/migrate/')
53
+ Rake::Task['db:update_schema'].invoke
54
+ puts 'Migration rolledback'
55
+ end
56
+ end
57
+
58
+ namespace :g do
59
+ desc 'Generate migration'
60
+ task :migration do
61
+ name = ARGV[1] || raise('Specify name: rake g:migration your_migration')
62
+ timestamp = Time.now.strftime('%Y%m%d%H%M%S')
63
+ path = File.expand_path(
64
+ "../../../db/migrate/#{timestamp}_#{name}.rb",
65
+ __FILE__
66
+ )
67
+ migration_class = name.split('_').map(&:capitalize).join
68
+
69
+ File.open(path, 'w') do |file|
70
+ file.write <<~EOF
71
+ class #{migration_class} < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
72
+ def change
73
+ end
74
+ end
75
+ EOF
76
+ end
77
+
78
+ puts "Migration #{path} created"
79
+ abort # needed stop other tasks
80
+ end
81
+ end
@@ -1,5 +1,5 @@
1
1
  syntax = 'proto3';
2
2
  package = "<%= name %>";
3
3
 
4
- service "<%= name.camelcase %>Service" {
4
+ service <%= name.camelcase %>Service {
5
5
  }
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './lib/<%= name.underscore %>_service'
4
+
5
+ Dir[File.expand_path 'lib/tasks/*.rake'].each do |file|
6
+ import file
7
+ end
@@ -1,8 +1,12 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
+ require './config/db_config'
3
4
 
4
5
  Bundler.require(:default)
5
- Dotenv.load
6
+
7
+ ActiveRecord::Base.establish_connection(
8
+ DbConfig.config
9
+ )
6
10
 
7
11
  require './lib/protos/<%= name.underscore %>_services_pb'
8
12
  require './config/initializers'
@@ -1,3 +1,3 @@
1
1
  module Runways
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/runways.gemspec CHANGED
@@ -40,4 +40,4 @@ Gem::Specification.new do |spec|
40
40
  spec.add_dependency "grpc", "~> 1.16"
41
41
  spec.add_dependency "grpc-tools", "~> 1.16"
42
42
  spec.add_dependency "thor", "~> 0.20"
43
- end
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runways
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - NG
@@ -117,9 +117,12 @@ files:
117
117
  - lib/runways.rb
118
118
  - lib/runways/generators/app_structure_generator.rb
119
119
  - lib/runways/generators/templates/application_record.tt
120
+ - lib/runways/generators/templates/db_config.tt
121
+ - lib/runways/generators/templates/db_rake.tt
120
122
  - lib/runways/generators/templates/gemfile.tt
121
123
  - lib/runways/generators/templates/models.tt
122
124
  - lib/runways/generators/templates/proto.tt
125
+ - lib/runways/generators/templates/rakefile.tt
123
126
  - lib/runways/generators/templates/server.tt
124
127
  - lib/runways/generators/templates/service.tt
125
128
  - lib/runways/version.rb