weapon 0.2.2 → 0.2.3

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: a7b98eef2fed257f65d7a388c123f7265d3a0111
4
- data.tar.gz: 545bc73a573868385e9c900cf2b0c8617a50a493
3
+ metadata.gz: a488fb189fbefd59f4d2bb80b4688e575a2b8eb1
4
+ data.tar.gz: d3b80d39dd07a7a136df60c11c2b5de5b65c06c3
5
5
  SHA512:
6
- metadata.gz: bfb7909bf9c3cabeb2cf381490ddcc570d20f8f3908453e2c7d5d67b334f8ace4c1a48489a9c42949f7d4b698b83b1db6480a309d12b58faafed0ec1b690d1fd
7
- data.tar.gz: 8bf36672904e2e173cd9ec95f444915b197aa1c2911c8e563ee46a3279b6882c24a6b34491939f4d01f226c9b9da1b3a0d1ab8b05b56233383681104d0e4f82b
6
+ metadata.gz: 0391f8b3b33ad961172ec9b0d1d2af2513f5ef3a0942c2c38ac6c826efe341e1ae9e16df32848f149dfd4fad2a36807bdc6a51f8ac4dd6972a37e4ce4a329d03
7
+ data.tar.gz: be475562fee373f5d89796aa15c5adfbe84cc316cd518bf62feb43a38f820965c3a904ecf2698a30891aaacb5931278cd23c6ef4bfac45103d65ee5a09ceace6
@@ -2,22 +2,72 @@ class ModelFromSqlGenerator < Rails::Generators::Base
2
2
  source_root File.expand_path("../templates", __FILE__)
3
3
 
4
4
  def build_models
5
+ ap 'args is '
6
+ ap args[0]
5
7
  tables = ActiveRecord::Base.connection.tables
6
8
 
7
9
  Rails.application.eager_load!
8
10
  in_models = ActiveRecord::Base.descendants.map(&:table_name)
11
+ ap 'tables from database'
12
+ ap tables
9
13
  ap in_models
10
14
  new_tables = tables - in_models - ['schema_migrations', 'ar_internal_metadata']
15
+ if args[0]
16
+ new_tables = new_tables.select {|table| table.include?(args[0])}
17
+ end
18
+
19
+
20
+ ap 'new tables'
21
+ ap new_tables
11
22
 
12
23
  new_tables.each do |table_name|
13
24
  generate "model #{table_name} --skip-migration" # or whatever you want here
14
25
  model_file = "app/models/#{table_name.singularize}.rb"
26
+ ap 'new model file'
27
+ ap 'output columns'
28
+ self.generate_migrate(table_name)
29
+ ap model_file
15
30
  inject_into_file model_file, before: "end\n" do <<-'RUBY'
16
31
  self.table_name = "table_name_replace"
17
32
  RUBY
18
33
  end
19
34
  gsub_file model_file, 'table_name_replace', table_name
20
35
  end
36
+ end
21
37
 
38
+ def generate_migrate(table_name)
39
+ valid_columns = ActiveRecord::Base.connection.columns(table_name).select {|column| !['id', 'created_at', 'updated_at'].include?(column.name)}
40
+ ap valid_columns
41
+ add_columns = valid_columns.map do |column|
42
+ ap column
43
+ ap column.name
44
+ ap column.default
45
+ ap column.comment
46
+ ap column.sql_type_metadata
47
+ sql = "add_column :#{column.table_name}, :#{column.name}, :#{column.sql_type_metadata.type}"
48
+ sql += ", default: #{column.default}" if column.default && column.default.is_a?(Integer)
49
+ sql += ", default: '#{column.default}'" if column.default && column.default.is_a?(String)
50
+ sql += ", comment: '#{column.comment}'" if column.comment
51
+ sql += ", null: #{column.null}"
52
+ sql
53
+ end
54
+ ap add_columns
55
+ migrate_file = "db/migrate/#{Time.now.strftime("%Y%m%d%H%M%S")}_create_#{table_name}.rb"
56
+ run "touch #{migrate_file}"
57
+ run "echo 'replace\n' >> #{migrate_file}"
58
+ inject_into_file migrate_file, before: "replace\n" do <<-'RUBY'
59
+ class CreateModelReplace < ActiveRecord::Migration
60
+ def change
61
+ create_table :table_replace
62
+ add_columns
63
+ end
64
+ end
65
+ RUBY
66
+ end
67
+ gsub_file migrate_file, 'ModelReplace', table_name.camelize
68
+ gsub_file migrate_file, 'add_columns', add_columns.join("\n ")
69
+ gsub_file migrate_file, 'table_replace', table_name.pluralize
70
+ gsub_file migrate_file, 'replace', ''
22
71
  end
72
+
23
73
  end
@@ -0,0 +1,10 @@
1
+ Fixnum.class_eval do
2
+ def to_duration
3
+ day = (self / 86400).to_i
4
+ if day == 0
5
+ Time.at(self).utc.strftime("%H:%M:%S")
6
+ else
7
+ day.to_s + ':' + Time.at(self).utc.strftime("%H:%M:%S")
8
+ end
9
+ end
10
+ end
@@ -131,17 +131,20 @@ class Weapon < Thor
131
131
  end
132
132
 
133
133
  desc "model_from_sql", "build model from sql"
134
+ method_option :contain, :type => :string, :default => '', :required => false
134
135
  def model_from_sql
135
136
  makesure_in_git
136
137
  FileUtils.mkdir_p "lib/generators/model_from_sql"
137
138
  copy_file 'support/model_from_sql/model_from_sql_generator.rb', 'lib/generators/model_from_sql/model_from_sql_generator.rb'
138
139
  run 'git add lib/'
139
- run 'rails g model_from_sql'
140
+ run "rails g model_from_sql #{options.contain}"
140
141
  run 'git add app/'
141
142
  run 'git add spec/'
142
143
  run 'git add test/'
143
144
  run 'git add lib/'
145
+ run 'git add db/migrate'
144
146
  run 'git commit -a -m "add model_from_sql generator and build models from sql"'
147
+ run 'annonate'
145
148
  end
146
149
 
147
150
  desc "build all activeadmin page ", "build all activeadmin page"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weapon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - seaify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-06 00:00:00.000000000 Z
11
+ date: 2016-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -114,6 +114,7 @@ files:
114
114
  - lib/support/model_from_sql/model_from_sql_generator.rb
115
115
  - lib/support/rails_settings_ui/rails_settings_ui.rb
116
116
  - lib/support/rails_settings_ui/setting.rb
117
+ - lib/support/util.rb
117
118
  - lib/weapon.rb
118
119
  homepage: https://github.com/seaify/weapon
119
120
  licenses:
@@ -135,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
136
  version: '0'
136
137
  requirements: []
137
138
  rubyforge_project:
138
- rubygems_version: 2.4.5
139
+ rubygems_version: 2.4.8
139
140
  signing_key:
140
141
  specification_version: 4
141
142
  summary: weapon for rails application!