trusty-cms 4.1.7 → 4.2.2

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.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +131 -128
  3. data/INSTALL.md +2 -0
  4. data/LICENSE.md +1 -1
  5. data/app/controllers/admin/pages_controller.rb +1 -1
  6. data/app/controllers/admin/preferences_controller.rb +1 -1
  7. data/app/controllers/admin/resource_controller.rb +1 -1
  8. data/app/controllers/admin/users_controller.rb +1 -1
  9. data/app/helpers/admin/node_helper.rb +1 -1
  10. data/app/models/asset.rb +3 -3
  11. data/app/models/page.rb +3 -3
  12. data/app/models/standard_tags.rb +3 -3
  13. data/app/models/user.rb +1 -1
  14. data/config/database.mysql.yml +10 -2
  15. data/config/environments/development.rb +2 -0
  16. data/db/migrate/20210331134718_create_active_storage_tables.active_storage.rb +36 -0
  17. data/lib/generators/extension/USAGE +30 -0
  18. data/lib/generators/extension/extension_generator.rb +97 -0
  19. data/lib/generators/extension/templates/README.md +6 -0
  20. data/lib/generators/extension/templates/RSpecRakefile +109 -0
  21. data/lib/generators/extension/templates/Rakefile +25 -0
  22. data/lib/generators/extension/templates/cucumber.yml +1 -0
  23. data/lib/generators/extension/templates/cucumber_env.rb +11 -0
  24. data/lib/generators/extension/templates/cucumber_paths.rb +22 -0
  25. data/lib/generators/extension/templates/en.yml +3 -0
  26. data/lib/generators/extension/templates/extension.rb +21 -0
  27. data/lib/generators/extension/templates/functional_test.rb +15 -0
  28. data/lib/generators/extension/templates/gemspec.rb +29 -0
  29. data/lib/generators/extension/templates/lib.rb +8 -0
  30. data/lib/generators/extension/templates/migration.rb +9 -0
  31. data/lib/generators/extension/templates/radiant_config.rb +3 -0
  32. data/lib/generators/extension/templates/routes.rb +5 -0
  33. data/lib/generators/extension/templates/spec.opts +6 -0
  34. data/lib/generators/extension/templates/spec_helper.rb +42 -0
  35. data/lib/generators/extension/templates/tasks.rake +47 -0
  36. data/lib/generators/extension/templates/test_helper.rb +24 -0
  37. data/lib/generators/extension_controller/USAGE +36 -0
  38. data/lib/generators/extension_controller/extension_controller_generator.rb +84 -0
  39. data/lib/generators/extension_controller/templates/controller.rb +10 -0
  40. data/lib/generators/extension_controller/templates/controller_spec.rb +23 -0
  41. data/lib/generators/extension_controller/templates/functional_test.rb +11 -0
  42. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  43. data/lib/generators/extension_controller/templates/helper_spec.rb +11 -0
  44. data/lib/generators/extension_controller/templates/helper_test.rb +4 -0
  45. data/lib/generators/extension_controller/templates/view.html.erb +2 -0
  46. data/lib/generators/extension_controller/templates/view_spec.rb +12 -0
  47. data/lib/generators/extension_mailer/USAGE +17 -0
  48. data/lib/generators/extension_mailer/extension_mailer_generator.rb +68 -0
  49. data/lib/generators/extension_mailer/templates/fixture.erb +3 -0
  50. data/lib/generators/extension_mailer/templates/mailer.rb +15 -0
  51. data/lib/generators/extension_mailer/templates/unit_test.rb +21 -0
  52. data/lib/generators/extension_mailer/templates/view.erb +3 -0
  53. data/lib/generators/extension_migration/USAGE +34 -0
  54. data/lib/generators/extension_migration/extension_migration_generator.rb +25 -0
  55. data/lib/generators/extension_migration/templates/migration.rb +11 -0
  56. data/lib/generators/extension_model/USAGE +35 -0
  57. data/lib/generators/extension_model/extension_model_generator.rb +68 -0
  58. data/lib/generators/extension_model/templates/fixtures.yml +19 -0
  59. data/lib/generators/extension_model/templates/migration.rb +16 -0
  60. data/lib/generators/extension_model/templates/model.rb +2 -0
  61. data/lib/generators/extension_model/templates/model_spec.rb +11 -0
  62. data/lib/generators/extension_model/templates/unit_test.rb +8 -0
  63. data/lib/generators/generator_base_extension.rb +18 -0
  64. data/lib/generators/instance/instance_generator.rb +148 -0
  65. data/lib/generators/instance/templates/databases/db2.yml +40 -0
  66. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  67. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  68. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  69. data/lib/generators/instance/templates/databases/sqlserver.yml +21 -0
  70. data/lib/generators/instance/templates/instance_boot.rb +122 -0
  71. data/lib/generators/instance/templates/instance_config.ru +2 -0
  72. data/lib/generators/instance/templates/instance_environment.rb +93 -0
  73. data/lib/generators/instance/templates/instance_gemfile +78 -0
  74. data/lib/generators/instance/templates/instance_generate +6 -0
  75. data/lib/generators/instance/templates/instance_radiant_config.rb +16 -0
  76. data/lib/generators/instance/templates/instance_rakefile +3 -0
  77. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  78. data/lib/generators/language_extension/USAGE +27 -0
  79. data/lib/generators/language_extension/language_extension_generator.rb +71 -0
  80. data/lib/generators/language_extension/templates/README +3 -0
  81. data/lib/generators/language_extension/templates/RSpecRakefile +123 -0
  82. data/lib/generators/language_extension/templates/Rakefile +25 -0
  83. data/lib/generators/language_extension/templates/available_tags.yml +553 -0
  84. data/lib/generators/language_extension/templates/cucumber.yml +1 -0
  85. data/lib/generators/language_extension/templates/cucumber_env.rb +16 -0
  86. data/lib/generators/language_extension/templates/cucumber_paths.rb +14 -0
  87. data/lib/generators/language_extension/templates/extension.rb +12 -0
  88. data/lib/generators/language_extension/templates/functional_test.rb +15 -0
  89. data/lib/generators/language_extension/templates/gemspec.rb +24 -0
  90. data/lib/generators/language_extension/templates/lang.yml +181 -0
  91. data/lib/generators/language_extension/templates/lib.rb +8 -0
  92. data/lib/generators/language_extension/templates/spec.opts +6 -0
  93. data/lib/generators/language_extension/templates/spec_helper.rb +36 -0
  94. data/lib/generators/language_extension/templates/tasks.rake +28 -0
  95. data/lib/generators/language_extension/templates/test_helper.rb +26 -0
  96. data/lib/generators/trusty_cms/USAGE +8 -0
  97. data/lib/generators/trusty_cms/templates/Rakefile.erb +7 -0
  98. data/lib/generators/trusty_cms/templates/application.rb.erb +149 -0
  99. data/lib/generators/trusty_cms/templates/boot.rb.erb +9 -0
  100. data/lib/generators/trusty_cms/templates/config.ru.erb +4 -0
  101. data/lib/generators/trusty_cms/templates/database.yml.erb +28 -0
  102. data/lib/generators/trusty_cms/templates/environment.rb.erb +5 -0
  103. data/lib/generators/trusty_cms/templates/environments/development.rb.erb +24 -0
  104. data/lib/generators/trusty_cms/templates/environments/production.rb.erb +26 -0
  105. data/lib/generators/trusty_cms/templates/environments/test.rb.erb +35 -0
  106. data/lib/generators/trusty_cms/templates/initializers/secret_token.rb.erb +13 -0
  107. data/lib/generators/trusty_cms/templates/initializers/session_store.rb.erb +8 -0
  108. data/lib/generators/trusty_cms/templates/initializers/trusty_cms_config.rb.erb +16 -0
  109. data/lib/generators/trusty_cms/templates/preinitializer.rb.erb +18 -0
  110. data/lib/generators/trusty_cms/templates/routes.rb.erb +0 -0
  111. data/lib/generators/trusty_cms/trusty_cms_generator.rb +32 -0
  112. data/lib/login_system.rb +1 -1
  113. data/lib/trusty_cms.rb +1 -1
  114. data/lib/trusty_cms/setup.rb +8 -8
  115. data/spec/dummy/config/database.yml +6 -2
  116. data/trusty_cms.gemspec +4 -5
  117. data/vendor/extensions/clipped-extension/lib/asset_tags.rb +4 -4
  118. data/yarn.lock +3 -3
  119. metadata +144 -84
  120. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/core.js +0 -126
  121. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/failsafe/index.js +0 -4
  122. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/failsafe/map.js +0 -56
  123. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/failsafe/seq.js +0 -43
  124. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/failsafe/string.js +0 -28
  125. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/index.js +0 -36
  126. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/json.js +0 -76
  127. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/options.js +0 -23
  128. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/yaml-1.1/binary.js +0 -87
  129. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/yaml-1.1/index.js +0 -157
  130. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/yaml-1.1/omap.js +0 -142
  131. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/yaml-1.1/pairs.js +0 -81
  132. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/yaml-1.1/set.js +0 -114
  133. data/spec/spec/dummy/node_modules/yaml/browser/dist/tags/yaml-1.1/timestamp.js +0 -97
  134. data/spec/spec/dummy/node_modules/yaml/dist/tags/core.js +0 -114
  135. data/spec/spec/dummy/node_modules/yaml/dist/tags/failsafe/index.js +0 -17
  136. data/spec/spec/dummy/node_modules/yaml/dist/tags/failsafe/map.js +0 -37
  137. data/spec/spec/dummy/node_modules/yaml/dist/tags/failsafe/seq.js +0 -34
  138. data/spec/spec/dummy/node_modules/yaml/dist/tags/failsafe/string.js +0 -40
  139. data/spec/spec/dummy/node_modules/yaml/dist/tags/index.js +0 -62
  140. data/spec/spec/dummy/node_modules/yaml/dist/tags/json.js +0 -60
  141. data/spec/spec/dummy/node_modules/yaml/dist/tags/options.js +0 -35
  142. data/spec/spec/dummy/node_modules/yaml/dist/tags/yaml-1.1/binary.js +0 -97
  143. data/spec/spec/dummy/node_modules/yaml/dist/tags/yaml-1.1/index.js +0 -131
  144. data/spec/spec/dummy/node_modules/yaml/dist/tags/yaml-1.1/omap.js +0 -105
  145. data/spec/spec/dummy/node_modules/yaml/dist/tags/yaml-1.1/pairs.js +0 -80
  146. data/spec/spec/dummy/node_modules/yaml/dist/tags/yaml-1.1/set.js +0 -91
  147. data/spec/spec/dummy/node_modules/yaml/dist/tags/yaml-1.1/timestamp.js +0 -93
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper'
2
+
3
+ # Re-raise errors caught by the controller.
4
+ <%= class_name %>Controller.class_eval { def rescue_action(e) raise e end }
5
+
6
+ class <%= class_name %>ControllerTest < ActionController::TestCase
7
+ # Replace this with your real tests.
8
+ def test_truth
9
+ assert true
10
+ end
11
+ end
@@ -0,0 +1,2 @@
1
+ module <%= class_name %>Helper
2
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../spec_helper'
2
+
3
+ describe <%= class_name %>Helper do
4
+
5
+ #Delete this example and add some real ones or delete this file
6
+ it "should include the <%= class_name %>Helper" do
7
+ included_modules = self.metaclass.send :included_modules
8
+ included_modules.should include(<%= class_name %>Helper)
9
+ end
10
+
11
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>HelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1,2 @@
1
+ <h1><%= class_name %>#<%= action %></h1>
2
+ <p>Find me in <%= File.join(extension_path, path) %></p>
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../../spec_helper'
2
+
3
+ describe "/<%= class_name.underscore %>/<%= action %>" do
4
+ before do
5
+ render '<%= class_name.underscore %>/<%= action %>'
6
+ end
7
+
8
+ #Delete this example and add some real ones or delete this file
9
+ it "should tell you where to find the file" do
10
+ response.should have_tag('p', 'Find me in app/views/<%= class_name.underscore %>/<%= action %>.rhtml')
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ Description:
2
+ Stubs out a new mailer and its views for the given extension.
3
+ Pass the mailer name, either CamelCased or under_scored,
4
+ and an optional list of emails as arguments.
5
+
6
+ This generates a mailer class in app/models, view templates in
7
+ app/views/mailer_name, a unit test in test/unit, and fixtures in
8
+ test/fixtures.
9
+
10
+ Example:
11
+ `./script/generate extension_mailer MyExt Notifications signup forgot_password invoice`
12
+
13
+ creates a Notifications mailer class, views, test, and fixtures:
14
+ Mailer: vendor/my_ext/app/models/notifications.rb
15
+ Views: vendor/my_ext/app/views/notifications/signup.erb [...]
16
+ Test: vendor/my_ext/test/unit/test/unit/notifications_test.rb
17
+ Fixtures: vendor/my_ext/test/fixtures/notifications/signup [...]
@@ -0,0 +1,68 @@
1
+ require 'rails_generator/base'
2
+ require 'rails_generator/generators/components/mailer/mailer_generator'
3
+
4
+ class ExtensionMailerGenerator < MailerGenerator
5
+
6
+ attr_accessor :extension_name
7
+ default_options :with_test_unit => false
8
+
9
+ def initialize(runtime_args, runtime_options = {})
10
+ runtime_args = runtime_args.dup
11
+ @extension_name = runtime_args.shift
12
+ super(runtime_args, runtime_options)
13
+ end
14
+
15
+ def manifest
16
+ if extension_uses_rspec?
17
+ rspec_manifest
18
+ else
19
+ super
20
+ end
21
+ end
22
+
23
+ def rspec_manifest
24
+ record do |m|
25
+ # Check for class naming collisions.
26
+ m.class_collisions class_path, class_name
27
+
28
+ # Mailer, view, test, and fixture directories.
29
+ m.directory File.join('app/models', class_path)
30
+ m.directory File.join('app/views', file_path)
31
+
32
+ # Mailer class and unit test.
33
+ m.template "mailer:mailer.rb", File.join('app/models', class_path, "#{file_name}.rb")
34
+
35
+ # View template and fixture for each action.
36
+ actions.each do |action|
37
+ relative_path = File.join(file_path, action)
38
+ view_path = File.join('app/views', "#{relative_path}.erb")
39
+
40
+ m.template "mailer:view.erb", view_path,
41
+ :assigns => { :action => action, :path => view_path }
42
+ end
43
+ end
44
+ end
45
+
46
+ def banner
47
+ "Usage: #{$0} #{spec.name} ExtensionName #{spec.name.camelize}Name [options]"
48
+ end
49
+
50
+ def extension_path
51
+ File.join('vendor', 'extensions', @extension_name.underscore)
52
+ end
53
+
54
+ def destination_root
55
+ File.join(Rails.root, extension_path)
56
+ end
57
+
58
+ def extension_uses_rspec?
59
+ File.exists?(File.join(destination_root, 'spec')) && !options[:with_test_unit]
60
+ end
61
+
62
+ def add_options!(opt)
63
+ opt.separator ''
64
+ opt.separator 'Options:'
65
+ opt.on("--with-test-unit",
66
+ "Use Test::Unit tests instead sof RSpec.") { |v| options[:with_test_unit] = v }
67
+ end
68
+ end
@@ -0,0 +1,3 @@
1
+ <%= class_name %>#<%= action %>
2
+
3
+ Find me in <%= path %>
@@ -0,0 +1,15 @@
1
+ class <%= class_name %> < ActionMailer::Base
2
+
3
+ <% for action in actions -%>
4
+
5
+ def <%= action %>(sent_at = Time.now)
6
+ subject '<%= class_name %>#<%= action %>'
7
+ recipients ''
8
+ from ''
9
+ sent_on sent_at
10
+
11
+ body :greeting => 'Hi,'
12
+ end
13
+ <% end -%>
14
+
15
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper'
2
+
3
+ class <%= class_name %>Test < ActionMailer::TestCase
4
+ tests <%= class_name %>
5
+ <% for action in actions -%>
6
+ def test_<%= action %>
7
+ @expected.subject = '<%= class_name %>#<%= action %>'
8
+ @expected.body = read_fixture('<%= action %>')
9
+ @expected.date = Time.now
10
+
11
+ assert_equal @expected.encoded, <%= class_name %>.create_<%= action %>(@expected.date).encoded
12
+ end
13
+
14
+ <% end -%>
15
+ <% if actions.blank? -%>
16
+ # replace this with your real tests
17
+ def test_truth
18
+ assert true
19
+ end
20
+ <% end -%>
21
+ end
@@ -0,0 +1,3 @@
1
+ <%= class_name %>#<%= action %>
2
+
3
+ Find me in <%= path %>
@@ -0,0 +1,34 @@
1
+ Description:
2
+ The extension_migration generator creates a stub for a new migration for an
3
+ extension.
4
+
5
+ The generator takes the extension name, a migration name as its arguments,
6
+ and an optional list of attribute pairs as arguments. The migration name
7
+ may be given in CamelCase or under_score.
8
+
9
+ You can name your migration in either of these formats to generate add/remove
10
+ column lines from supplied attributes: AddColumnsToTable or RemoveColumnsFromTable
11
+
12
+ A migration class is generated in vendor/extensions/extension_name/db/migrate
13
+ prefixed by a timestamp of the current date and time.
14
+
15
+ Examples:
16
+ `./script/generate extension_migration MyExt AddSslFlag`
17
+
18
+ If the current date is May 14, 2008 and the current time 09:09:12, this creates the AddSslFlag migration
19
+ vendor/extensions/my_ext/db/migrate/20080514090912_add_ssl_flag.rb
20
+
21
+ `./script/generate migration MyExt AddTitleBodyToPost title:string body:text published:boolean`
22
+
23
+ This will create the AddTitleBodyToPost in vendor/extensions/my_ext/db/migrate/20080514090912_add_title_body_to_post.rb
24
+ with this in the Up migration:
25
+
26
+ add_column :posts, :title, :string
27
+ add_column :posts, :body, :text
28
+ add_column :posts, :published, :boolean
29
+
30
+ And this in the Down migration:
31
+
32
+ remove_column :posts, :published
33
+ remove_column :posts, :body
34
+ remove_column :posts, :title
@@ -0,0 +1,25 @@
1
+ require 'rails_generator/base'
2
+ require 'rails_generator/generators/components/migration/migration_generator'
3
+
4
+ class ExtensionMigrationGenerator < MigrationGenerator
5
+
6
+ attr_accessor :extension_name
7
+
8
+ def initialize(runtime_args, runtime_options = {})
9
+ runtime_args = runtime_args.dup
10
+ @extension_name = runtime_args.shift
11
+ super(runtime_args, runtime_options)
12
+ end
13
+
14
+ def banner
15
+ "Usage: #{$0} extension_migration ExtensionName MigrationName [field:type, field:type]"
16
+ end
17
+
18
+ def extension_path
19
+ File.join('vendor', 'extensions', @extension_name.underscore)
20
+ end
21
+
22
+ def destination_root
23
+ File.join(Rails.root, extension_path)
24
+ end
25
+ end
@@ -0,0 +1,11 @@
1
+ class <%= class_name.underscore.camelize %> < ActiveRecord::Migration[5.2]
2
+ def self.up<% attributes.each do |attribute| %>
3
+ <%= migration_action %>_column :<%= table_name %>, :<%= attribute.name %><% if migration_action == 'add' %>, :<%= attribute.type %><% end -%>
4
+ <%- end %>
5
+ end
6
+
7
+ def self.down<% attributes.reverse.each do |attribute| %>
8
+ <%= migration_action == 'add' ? 'remove' : 'add' %>_column :<%= table_name %>, :<%= attribute.name %><% if migration_action == 'remove' %>, :<%= attribute.type %><% end -%>
9
+ <%- end %>
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ Description:
2
+ The extension_model generator creates stubs for a new model for an
3
+ extension.
4
+
5
+ The generator takes the extension name and a model name as its arguments.
6
+ The model name may be given in CamelCase or under_score and should not be
7
+ suffixed with 'Model'.
8
+
9
+ As additional parameters, the generator will take attribute pairs
10
+ described by name and type. These attributes will be used to prepopulate
11
+ the migration to create the table for the model and give you a set of
12
+ predefined fixtures. You don't have to think up all attributes up front,
13
+ but it's a good idea of adding just the baseline of what's needed to start
14
+ really working with the resource.
15
+
16
+ The generator creates a model class in
17
+ vendor/extensions/extension_name/app/models, a test suite in
18
+ vendor/extensions/extension_name/test/unit, test fixtures in
19
+ vendor/extensions/extension_name/test/fixtures/singular_name.yml, and a
20
+ migration in vendor/extensions/extension_name/db/migrate.
21
+
22
+ Examples:
23
+ ./script/generate extension_model MyExt account
24
+
25
+ This will create an Account model:
26
+
27
+ Model: vendor/extensions/my_ext/app/models/account.rb
28
+ Migration: vendor/extensions/my_ext/db/migrate/XXX_add_accounts.rb
29
+ Spec: vendor/extensions/my_ext/spec/models/account_spec.rb
30
+ Test: vendor/extensions/my_ext/test/unit/account_test.rb (if extension created with "--with-test-unit")
31
+ Fixtures: vendor/extensions/my_ext/test/fixtures/accounts.yml (if extension created with "--with-test-unit")
32
+
33
+ ./script/generate extension_model MyExt post title:string body:text
34
+
35
+ Creates post model with predefined attributes.
@@ -0,0 +1,68 @@
1
+ require 'rails_generator/base'
2
+ require 'rails_generator/generators/components/model/model_generator'
3
+
4
+ class ExtensionModelGenerator < ModelGenerator
5
+
6
+ attr_accessor :extension_name
7
+ default_options :with_test_unit => false
8
+
9
+ def initialize(runtime_args, runtime_options = {})
10
+ runtime_args = runtime_args.dup
11
+ @extension_name = runtime_args.shift
12
+ super(runtime_args, runtime_options)
13
+ end
14
+
15
+ def manifest
16
+ if extension_uses_rspec?
17
+ rspec_manifest
18
+ else
19
+ super
20
+ end
21
+ end
22
+
23
+ def rspec_manifest
24
+ record do |m|
25
+ # Check for class naming collisions.
26
+ m.class_collisions class_path, class_name
27
+
28
+ # Model, spec, and fixture directories.
29
+ m.directory File.join('app/models', class_path)
30
+ m.directory File.join('spec/models', class_path)
31
+ # m.directory File.join('spec/fixtures', class_path)
32
+
33
+ # Model class, spec and fixtures.
34
+ m.template 'model:model.rb', File.join('app/models', class_path, "#{file_name}.rb")
35
+ # m.template 'model:fixtures.yml', File.join('spec/fixtures', class_path, "#{table_name}.yml")
36
+ m.template 'model_spec.rb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
37
+
38
+ unless options[:skip_migration]
39
+ m.migration_template 'model:migration.rb', 'db/migrate', :assigns => {
40
+ :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
41
+ }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
42
+ end
43
+ end
44
+ end
45
+
46
+ def banner
47
+ "Usage: #{$0} extension_model ExtensionName ModelName [field:type, field:type]"
48
+ end
49
+
50
+ def extension_path
51
+ File.join('vendor', 'extensions', @extension_name.underscore)
52
+ end
53
+
54
+ def destination_root
55
+ File.join(Rails.root, extension_path)
56
+ end
57
+
58
+ def extension_uses_rspec?
59
+ File.exists?(File.join(destination_root, 'spec')) && !options[:with_test_unit]
60
+ end
61
+
62
+ def add_options!(opt)
63
+ opt.separator ''
64
+ opt.separator 'Options:'
65
+ opt.on("--with-test-unit",
66
+ "Use Test::Unit tests instead sof RSpec.") { |v| options[:with_test_unit] = v }
67
+ end
68
+ end
@@ -0,0 +1,19 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ <% unless attributes.empty? -%>
4
+ one:
5
+ <% for attribute in attributes -%>
6
+ <%= attribute.name %>: <%= attribute.default %>
7
+ <% end -%>
8
+
9
+ two:
10
+ <% for attribute in attributes -%>
11
+ <%= attribute.name %>: <%= attribute.default %>
12
+ <% end -%>
13
+ <% else -%>
14
+ # one:
15
+ # column: value
16
+ #
17
+ # two:
18
+ # column: value
19
+ <% end -%>
@@ -0,0 +1,16 @@
1
+ class <%= migration_name %> < ActiveRecord::Migration[5.2]
2
+ def self.up
3
+ create_table :<%= table_name %> do |t|
4
+ <% for attribute in attributes -%>
5
+ t.<%= attribute.type %> :<%= attribute.name %>
6
+ <% end -%>
7
+ <% unless options[:skip_timestamps] %>
8
+ t.timestamps
9
+ <% end -%>
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :<%= table_name %>
15
+ end
16
+ end
@@ -0,0 +1,2 @@
1
+ class <%= class_name %> < ActiveRecord::Base
2
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../spec_helper'
2
+
3
+ describe <%= class_name %> do
4
+ before(:each) do
5
+ @<%= file_name %> = <%= class_name %>.new
6
+ end
7
+
8
+ it "should be valid" do
9
+ @<%= file_name %>.should be_valid
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper'
2
+
3
+ class <%= class_name %>Test < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ def test_truth
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails_generator'
2
+ module TrustyCms
3
+ module GeneratorBaseExtension
4
+ def self.included(base)
5
+ base.class_eval {
6
+ alias_method :existing_migrations_without_extensions, :existing_migrations
7
+ alias_method :existing_migrations, :existing_migrations_with_extensions
8
+ }
9
+ end
10
+
11
+ def existing_migrations_with_extensions(file_name)
12
+ Dir.glob("#{destination_path(@migration_directory)}/[0-9]*_*.rb").grep(/[0-9]+_#{file_name}.rb$/)
13
+ end
14
+
15
+ end
16
+ end
17
+
18
+ Rails::Generator::Commands::Base.class_eval { include TrustyCms::GeneratorBaseExtension }