schema_dev 3.0.1 → 3.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: bd6c69cfe0a866b68f7a79231a8beb2a4c5bda9d
4
- data.tar.gz: 7371f48ae6592f72c3420d77de7455b076ffb386
3
+ metadata.gz: f5bfa06af8b9f00fffcb689a75ca9660c956241c
4
+ data.tar.gz: d09915f7524f4e4a3dafcb2a0501c47d54185c08
5
5
  SHA512:
6
- metadata.gz: 989dd3e71793ad318c6bcb41ef1e7bace17ed0f354455ac87110b4c9605efb0be7c15ff3bcb27994c752153df246b67b34d8d53a15ef629d04b80ba26cd2c913
7
- data.tar.gz: f3e25a5b2a4afb82bd4a9898760771ed7d1bfb3df6d6429df9acc4de0c1df43c294a61ac68384994c2bc36ece42fb69251a60830692e254ab96b6b31a5859838
6
+ metadata.gz: 99bf2a55254c90452aefa89e0afab3c40affdb320c957e92dd46eba4867d16de386780b96a00630eebd1b6edacdb5889a8a654bed750831282549f810d30c58a
7
+ data.tar.gz: 062cdcfbf0f1e41cbead8ca3b7b1983248cbdc04e936eb11cecd3bbbd315db3dfd22b5fffe8dbbaff7cda692317ebe8ae66b64005401037cd4a9c3ef1d141c6b
@@ -15,14 +15,14 @@ module SchemaDev
15
15
 
16
16
  def initialize(name)
17
17
  self.gem_name = name.underscore
18
- self.gem_module = gem_name.camelize
18
+ self.gem_module = gem_name.camelize.sub(/^SchemaPlus(?=\w+)/, 'SchemaPlus::')
19
19
  self.gem_root = Pathname.new(gem_name)
20
+ get_fullname_and_email
20
21
  end
21
22
 
22
23
  def build
23
24
  ensure_not_in_git
24
25
  ensure_doesnt_exist
25
- get_fullname_and_email
26
26
  copy_template
27
27
  self.gem_root = self.gem_root.realpath
28
28
  rename_files
@@ -66,6 +66,7 @@ module SchemaDev
66
66
 
67
67
  def copy_template
68
68
  FileUtils.cp_r Templates.root + "gem", gem_root
69
+ (gem_root + "gitignore").rename gem_root + ".gitignore"
69
70
  end
70
71
 
71
72
  def rename_files
@@ -114,7 +115,7 @@ module SchemaDev
114
115
  def git_init
115
116
  Dir.chdir gem_name do
116
117
  system "git init"
117
- system "git add #{gem_root.find.select(&:exist?).join(' ')}"
118
+ system "git add #{gem_root.find.select(&:exist?).reject(&it.basename.to_s == 'Gemfile.local').join(' ')}"
118
119
  system "git commit -m 'Initial skeleton generated by `schema_dev gem #{gem_name}`'"
119
120
  end
120
121
  end
@@ -17,30 +17,53 @@ module SchemaDev
17
17
  return false unless readme.exist?
18
18
  lines = readme.readlines
19
19
  newlines = sub_matrix(lines)
20
+ newlines = sub_templates(newlines)
20
21
  if lines != newlines
21
- readme.write newlines.join
22
+ readme.write Gem.new(Pathname.pwd.basename.to_s).subs(newlines.join)
22
23
  return true
23
24
  end
24
25
  end
25
26
 
26
27
  def sub_matrix(lines)
27
- pattern = %r{^\s*<!-- SCHEMA_DEV: MATRIX}
28
- before = lines.take_while(&it !~ pattern)
28
+ replace_block(lines, %r{^\s*<!-- SCHEMA_DEV: MATRIX}) do |contents|
29
+ contents << "<!-- SCHEMA_DEV: MATRIX - begin -->\n"
30
+ contents << "<!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->\n"
31
+ self.matrix.group_by(&it.slice(:ruby, :activerecord)).each do |pair, items|
32
+ contents << "* ruby **#{pair[:ruby]}** with activerecord **#{pair[:activerecord]}**, using #{items.map{|item| "**#{item[:db]}**"}.to_sentence(last_word_connector: ' or ')}\n"
33
+ end
34
+ contents << "\n"
35
+ contents << "<!-- SCHEMA_DEV: MATRIX - end -->\n"
36
+ end
37
+ end
29
38
 
30
- return lines if before == lines
39
+ def sub_templates(lines)
40
+ Pathname.glob(SchemaDev::Templates.root + "README" + "*.md").each do |template|
41
+ lines = sub_template(template, lines)
42
+ end
43
+ lines
44
+ end
31
45
 
32
- after = lines.reverse.take_while(&it !~ pattern).reverse
46
+ def sub_template(template, lines)
47
+ key = template.basename.sub_ext('').to_s.upcase.tr('.', ' ')
33
48
 
34
- contents = []
35
- contents << "<!-- SCHEMA_DEV: MATRIX - begin -->\n"
36
- contents << "<!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->\n"
37
- self.matrix.group_by(&it.slice(:ruby, :activerecord)).each do |pair, items|
38
- contents << "* ruby **#{pair[:ruby]}** with activerecord **#{pair[:activerecord]}**, using #{items.map{|item| "**#{item[:db]}**"}.to_sentence(last_word_connector: ' or ')}\n"
49
+ replace_block(lines, %r{^\s*<!-- SCHEMA_DEV: TEMPLATE #{key}}) do |contents|
50
+ contents << "<!-- SCHEMA_DEV: TEMPLATE #{key} - begin -->\n"
51
+ contents << "<!-- These lines are auto-inserted from a schema_dev template -->\n"
52
+ contents << template.readlines
53
+ contents << "\n"
54
+ contents << "<!-- SCHEMA_DEV: TEMPLATE #{key} - end -->\n"
39
55
  end
40
- contents << "\n"
41
- contents << "<!-- SCHEMA_DEV: MATRIX - end -->\n"
56
+ end
42
57
 
58
+ def replace_block(lines, pattern)
59
+ before = lines.take_while(&it !~ pattern)
60
+ return lines if before == lines
61
+ after = lines.reverse.take_while(&it !~ pattern).reverse
62
+ contents = []
63
+ yield contents
43
64
  before + contents + after
44
65
  end
66
+
67
+
45
68
  end
46
69
  end
@@ -30,12 +30,17 @@ module SchemaDev
30
30
  @logroot ||= Pathname.new('log').tap { |path| path.mkpath }
31
31
  end
32
32
 
33
+ def database
34
+ @database ||= "schema_plus_test"
35
+ # @database ||= (Dir["*.gemspec"].first || "schema_dev_test").sub(/\.gemspec$/, '') + "_test"
36
+ end
37
+
33
38
  def configuration
34
39
  case @db
35
40
  when 'mysql'
36
41
  {
37
42
  :adapter => 'mysql',
38
- :database => 'schema_plus_test',
43
+ :database => database,
39
44
  :username => ENV.fetch('MYSQL_DB_USER', 'schema_plus'),
40
45
  :encoding => 'utf8',
41
46
  :min_messages => 'warning'
@@ -43,7 +48,7 @@ module SchemaDev
43
48
  when 'mysql2'
44
49
  {
45
50
  :adapter => 'mysql2',
46
- :database => 'schema_plus_test',
51
+ :database => database,
47
52
  :username => ENV.fetch('MYSQL_DB_USER', 'schema_plus'),
48
53
  :encoding => 'utf8',
49
54
  :min_messages => 'warning'
@@ -52,13 +57,13 @@ module SchemaDev
52
57
  {
53
58
  :adapter => 'postgresql',
54
59
  :username => ENV['POSTGRESQL_DB_USER'],
55
- :database => 'schema_plus_test',
60
+ :database => database,
56
61
  :min_messages => 'warning'
57
62
  }
58
63
  when 'sqlite3'
59
64
  {
60
65
  :adapter => 'sqlite3',
61
- :database => tmproot.join('schema_plus.sqlite3').to_s
66
+ :database => tmproot.join("#{database}.sqlite3").to_s
62
67
  }
63
68
  else
64
69
  raise "Unknown db adapter #{@db.inspect}"
@@ -1,3 +1,3 @@
1
1
  module SchemaDev
2
- VERSION = "3.0.1"
2
+ VERSION = "3.1.0"
3
3
  end
@@ -0,0 +1,14 @@
1
+ As usual:
2
+
3
+ ```ruby
4
+ gem "%GEM_NAME%" # in a Gemfile
5
+ gem.add_dependency "%GEM_NAME%" # in a .gemspec
6
+ ```
7
+
8
+ To use with a rails app, also include
9
+
10
+ ```ruby
11
+ gem "schema_monkey_rails"
12
+ ```
13
+
14
+ which creates a Railtie to that will insert %GEM_MODULE% appropriately into the rails stack. To use with Padrino, see [schema_monkey_padrino](https://github.com/SchemaPlus/schema_monkey_padrino).
@@ -0,0 +1,15 @@
1
+ * **schema_dev**: %GEM_MODULE% uses [schema_dev](https://github.com/SchemaPlus/schema_dev) to
2
+ facilitate running rspec tests on the matrix of ruby, activerecord, and database
3
+ versions that the gem supports, both locally and on
4
+ [travis-ci](http://travis-ci.org/SchemaPlus/%GEM_NAME%)
5
+
6
+ To to run rspec locally on the full matrix, do:
7
+
8
+ $ schema_dev bundle install
9
+ $ schema_dev rspec
10
+
11
+ You can also run on just one configuration at a time; For info, see `schema_dev --help` or the [schema_dev](https://github.com/SchemaPlus/schema_dev) README.
12
+
13
+ The matrix of configurations is specified in `schema_dev.yml` in
14
+ the project root.
15
+
@@ -0,0 +1,5 @@
1
+ * **schema_monkey**: %GEM_MODULE% is implemented as a
2
+ [schema_monkey](https://github.com/SchemaPlus/schema_monkey) client,
3
+ using [schema_monkey](https://github.com/SchemaPlus/schema_monkey)'s
4
+ convention-based protocols for extending ActiveRecord and using middleware stacks.
5
+ For more information see [schema_monkey](https://github.com/SchemaPlus/schema_monkey)'s README.
@@ -0,0 +1,6 @@
1
+ * **schema_plus_core**: %GEM_MODULE% uses the SchemaPlus::Core API that
2
+ provides middleware callback stacks to make it easy to extend
3
+ ActiveRecord's behavior. If that API is missing something you need for
4
+ your contribution, please head over to
5
+ [schema_plus_core](https://github/SchemaPlus/schema_plus_core) and open
6
+ an issue or pull request.
@@ -3,28 +3,28 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require '%GEM_NAME%/version'
5
5
 
6
- Gem::Specification.new do |spec|
7
- spec.name = "%GEM_NAME%"
8
- spec.version = %GEM_MODULE%::VERSION
9
- spec.authors = ["%FULLNAME%"]
10
- spec.email = ["%EMAIL%"]
11
- spec.summary = %q{TODO: Write a short summary. Required.}
12
- spec.description = %q{TODO: Write a longer description. Optional.}
13
- spec.homepage = "https://github.com/SchemaPlus/%GEM_NAME%"
14
- spec.license = "MIT"
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "%GEM_NAME%"
8
+ gem.version = %GEM_MODULE%::VERSION
9
+ gem.authors = ["%FULLNAME%"]
10
+ gem.email = ["%EMAIL%"]
11
+ gem.summary = %q{TODO: Write a short summary. Required.}
12
+ gem.description = %q{TODO: Write a longer description. Optional.}
13
+ gem.homepage = "https://github.com/SchemaPlus/%GEM_NAME%"
14
+ gem.license = "MIT"
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
16
+ gem.files = `git ls-files -z`.split("\x0")
17
+ gem.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ gem.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "activerecord", "~> 4.2"
22
- spec.add_dependency "schema_monkey", %SCHEMA_MONKEY_DEPENDENCY%
21
+ gem.add_dependency "activerecord", "~> 4.2"
22
+ gem.add_dependency "schema_monkey", %SCHEMA_MONKEY_DEPENDENCY%
23
23
 
24
- spec.add_development_dependency "bundler", "~> 1.7"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec", "~> 3.0.0"
27
- spec.add_development_dependency "schema_dev", %SCHEMA_DEV_DEPENDENCY%
28
- spec.add_development_dependency "simplecov"
29
- spec.add_development_dependency "simplecov-gem-profile"
24
+ gem.add_development_dependency "bundler", "~> 1.7"
25
+ gem.add_development_dependency "rake", "~> 10.0"
26
+ gem.add_development_dependency "rspec", "~> 3.0.0"
27
+ gem.add_development_dependency "schema_dev", %SCHEMA_DEV_DEPENDENCY%
28
+ gem.add_development_dependency "simplecov"
29
+ gem.add_development_dependency "simplecov-gem-profile"
30
30
  end
@@ -0,0 +1,10 @@
1
+ # Gemfile.local
2
+ #
3
+ # Gems for local development, .gitignore'd to not include in released gem
4
+ #
5
+
6
+ # For path-relative gems (because Gemfile.local gets included from Gemfiles
7
+ # in subdirectories, the actual system cwd may be elsewhere)
8
+ cwd = Pathname.new(__FILE__).dirname
9
+
10
+ gem "byebug"
@@ -11,11 +11,8 @@ TODO: Write a gem description
11
11
 
12
12
  ## Installation
13
13
 
14
- In your application's Gemfile
14
+ <!-- SCHEMA_DEV: TEMPLATE INSTALLATION -->
15
15
 
16
- ```ruby
17
- gem "%GEM_NAME%"
18
- ```
19
16
  ## Compatibility
20
17
 
21
18
  %GEM_MODULE% is tested on:
@@ -28,28 +25,18 @@ TODO: Write usage instructions here
28
25
 
29
26
  ## History
30
27
 
31
- * See [CHANGELOG](CHANGELOG.md) for per-version release notes.
28
+ * 0.1.0 - Initial release
32
29
 
33
30
  ## Development & Testing
34
31
 
35
- Are you interested in contributing to %GEM_MODULE%? Thanks! Please follow the standard protocol: fork, feature branch, develop, push, and issue pull request.
32
+ Are you interested in contributing to %GEM_MODULE%? Thanks! Please follow
33
+ the standard protocol: fork, feature branch, develop, push, and issue pull
34
+ request.
36
35
 
37
36
  Some things to know about to help you develop and test:
38
37
 
39
- * **schema_dev**: %GEM_MODULE% uses [schema_dev](https://github.com/SchemaPlus/schema_dev) to
40
- facilitate running rspec tests on the matrix of ruby, activerecord, and database
41
- versions that the gem supports, both locally and on
42
- [travis-ci](http://travis-ci.org/SchemaPlus/%GEM_NAME%)
38
+ <!-- SCHEMA_DEV: TEMPLATE USES SCHEMA_DEV -->
43
39
 
44
- To to run rspec locally on the full matrix, do:
40
+ <!-- SCHEMA_DEV: TEMPLATE USES SHEMA_PLUS_CORE -->
45
41
 
46
- $ schema_dev bundle install
47
- $ schema_dev rspec
48
-
49
- You can also run on just one configuration at a time; For info, see `schema_dev --help` or the [schema_dev](https://github.com/SchemaPlus/schema_dev) README.
50
-
51
- The matrix of configurations is specified in `schema_dev.yml` in
52
- the project root.
53
-
54
- * **schema_monkey**: %GEM_MODULE% extends ActiveRecord using
55
- [schema_monkey](https://github.com/SchemaPlus/schema_monkey)'s extension API and protocols -- see its README for details. If your contribution needs any additional monkey patching that isn't already supported by [schema_monkey](https://github.com/SchemaPlus/schema_monkey), please head over there and submit a PR.
42
+ <!-- SCHEMA_DEV: TEMPLATE USES SHEMA_MONKEY -->
File without changes
@@ -1,5 +1,4 @@
1
1
  ruby:
2
- - 1.9.3
3
2
  - 2.1.5
4
3
  activerecord:
5
4
  - 4.2
@@ -1,8 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec :path => File.expand_path('..', __FILE__)
3
3
 
4
- platform :ruby do
5
- gem "byebug" if RUBY_VERSION > "2"
6
- end
7
-
8
4
  File.exist?(gemfile_local = File.expand_path('../Gemfile.local', __FILE__)) and eval File.read(gemfile_local), binding, gemfile_local
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ronen barzel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-01 00:00:00.000000000 Z
11
+ date: 2015-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -234,12 +234,17 @@ files:
234
234
  - spec/runner_spec.rb
235
235
  - spec/spec_helper.rb
236
236
  - spec/travis_spec.rb
237
- - templates/gem/.gitignore
237
+ - templates/README/installation.md
238
+ - templates/README/uses.schema_dev.md
239
+ - templates/README/uses.schema_monkey.md
240
+ - templates/README/uses.schema_plus_core.md
238
241
  - templates/gem/GEM_NAME.gemspec
239
242
  - templates/gem/Gemfile
243
+ - templates/gem/Gemfile.local
240
244
  - templates/gem/LICENSE.txt
241
245
  - templates/gem/README.md
242
246
  - templates/gem/Rakefile
247
+ - templates/gem/gitignore
243
248
  - templates/gem/lib/GEM_NAME.rb
244
249
  - templates/gem/lib/GEM_NAME/version.rb
245
250
  - templates/gem/schema_dev.yml