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
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright (c) 2006-2009, John W. Long and Sean D. Cribbs.
3
+ Copyright (c) 2006-2021, John W. Long and Sean D. Cribbs.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -75,7 +75,7 @@ class Admin::PagesController < Admin::ResourceController
75
75
  if request.referer =~ %r{/admin/pages/(\d+)/edit}
76
76
  page = Page.find($1).becomes(page_class)
77
77
  layout_id = page.layout_id
78
- page.update_attributes(params[:page])
78
+ page.update(params[:page])
79
79
  page.published_at ||= Time.now
80
80
  else
81
81
  page = page_class.new(params[:page])
@@ -11,7 +11,7 @@ class Admin::PreferencesController < ApplicationController
11
11
  end
12
12
 
13
13
  def update
14
- if @user.update_attributes(preferences_params)
14
+ if @user.update(preferences_params)
15
15
  redirect_to admin_configuration_path
16
16
  else
17
17
  flash[:error] = t('preferences_controller.error_updating')
@@ -59,7 +59,7 @@ class Admin::ResourceController < ApplicationController
59
59
  %i[create update].each do |action|
60
60
  class_eval %{
61
61
  def #{action} # def create
62
- model.update_attributes!(permitted_params[model_symbol]) # model.update_attributes!(params[model_symbol])
62
+ model.update!(permitted_params[model_symbol]) # model.update!(params[model_symbol])
63
63
  response_for :#{action} # response_for :create
64
64
  end # end
65
65
  }, __FILE__, __LINE__
@@ -29,7 +29,7 @@ class Admin::UsersController < Admin::ResourceController
29
29
  announce_cannot_remove_self_from_admin_role
30
30
  end
31
31
  model.skip_password_validation = true unless user_params[:password_confirmation].present?
32
- if model.update_attributes(user_params)
32
+ if model.update(user_params)
33
33
  response_for :update
34
34
  else
35
35
  flash[:error] = 'There was an error saving the user. Please try again.'
@@ -10,7 +10,7 @@ module Admin::NodeHelper
10
10
 
11
11
  @rendered_html += (render partial: 'admin/pages/node',
12
12
  locals: { level: index, index: index, parent_index: parent_index,
13
- page: page, simple: simple, branch: (page.children.count > 0) })
13
+ page: page, simple: simple, branch: (page.children.count.positive?) })
14
14
  index
15
15
  end
16
16
 
data/app/models/asset.rb CHANGED
@@ -74,12 +74,12 @@ class Asset < ActiveRecord::Base
74
74
 
75
75
  def thumbnail(style_name = 'original')
76
76
  return asset.url if style_name.to_sym == :original
77
- return asset.url(style_name.to_sym) if has_style?(style_name)
77
+ return asset.url(style_name.to_sym) if style?(style_name)
78
78
 
79
79
  asset_type.icon(style_name)
80
80
  end
81
81
 
82
- def has_style?(style_name = 'original')
82
+ def style?(style_name = 'original')
83
83
  style_name == 'original' || paperclip_styles.keys.include?(style_name.to_sym)
84
84
  end
85
85
 
@@ -110,7 +110,7 @@ class Asset < ActiveRecord::Base
110
110
  end
111
111
 
112
112
  def geometry(style_name = 'original')
113
- raise Paperclip::StyleError, "Requested style #{style_name} is not defined for this asset." unless has_style?(style_name)
113
+ raise Paperclip::StyleError, "Requested style #{style_name} is not defined for this asset." unless style?(style_name)
114
114
 
115
115
  @geometry ||= {}
116
116
  begin
data/app/models/page.rb CHANGED
@@ -76,16 +76,16 @@ class Page < ActiveRecord::Base
76
76
  end
77
77
  end
78
78
 
79
- def has_part?(name)
79
+ def part?(name)
80
80
  !part(name).nil?
81
81
  end
82
82
 
83
83
  def has_or_inherits_part?(name)
84
- has_part?(name) || inherits_part?(name)
84
+ part?(name) || inherits_part?(name)
85
85
  end
86
86
 
87
87
  def inherits_part?(name)
88
- !has_part?(name) && ancestors.any? { |page| page.has_part?(name) }
88
+ !part?(name) && ancestors.any? { |page| page.part?(name) }
89
89
  end
90
90
 
91
91
  def field(name)
@@ -312,7 +312,7 @@ module StandardTags
312
312
  }
313
313
  tag 'if_children' do |tag|
314
314
  children = tag.locals.page.children.where(children_find_options(tag)[:conditions]).count
315
- tag.expand if children > 0
315
+ tag.expand if children.positive?
316
316
  end
317
317
 
318
318
  desc %{
@@ -327,7 +327,7 @@ module StandardTags
327
327
  }
328
328
  tag 'unless_children' do |tag|
329
329
  children = tag.locals.page.children.where(children_find_options(tag)[:conditions]).count
330
- tag.expand unless children > 0
330
+ tag.expand unless children.positive?
331
331
  end
332
332
 
333
333
  desc %{
@@ -961,7 +961,7 @@ module StandardTags
961
961
  page_path = remove_trailing_slash(path)
962
962
  hash[:title] = title
963
963
  hash[:path] = path
964
- tag.locals.first_child = i == 0
964
+ tag.locals.first_child = i.zero?
965
965
  tag.locals.last_child = i == pairs.length - 1
966
966
  result << case page_path
967
967
  when compare_path
data/app/models/user.rb CHANGED
@@ -19,7 +19,7 @@ class User < ActiveRecord::Base
19
19
  belongs_to :created_by, class_name: 'User'
20
20
  belongs_to :updated_by, class_name: 'User'
21
21
 
22
- def has_role?(role)
22
+ def role?(role)
23
23
  case role
24
24
  when :admin
25
25
  admin?
@@ -2,6 +2,9 @@
2
2
  # This is only an example configuration. Please see the Rails
3
3
  # documentation for more details.
4
4
  #
5
+ defaults: &defaults
6
+ adapter: mysql
7
+ db: localhost
5
8
 
6
9
  development:
7
10
  adapter: mysql2
@@ -10,10 +13,15 @@ development:
10
13
  password:
11
14
 
12
15
  test: &TEST
13
- adapter: mysql2
16
+ adapter: mysql2
14
17
  database: trusty_cms_test
15
18
  username: root
16
- password:
19
+ password: ''
20
+ db: '127.0.0.1'
21
+ port: 0
22
+ encoding: utf8mb4
23
+ charset: utf8mb4
24
+ collation: utf8mb4_bin
17
25
 
18
26
  production:
19
27
  adapter: mysql2
@@ -29,4 +29,6 @@ TrustyCms::Application.configure do
29
29
 
30
30
  # Expands the lines which load the assets
31
31
  config.assets.debug = true
32
+ config.assets.check_precompiled_asset = false
33
+
32
34
  end
@@ -0,0 +1,36 @@
1
+ # This migration comes from active_storage (originally 20170806125915)
2
+ class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
3
+ def change
4
+ create_table :active_storage_blobs do |t|
5
+ t.string :key, null: false
6
+ t.string :filename, null: false
7
+ t.string :content_type
8
+ t.text :metadata
9
+ t.string :service_name, null: false
10
+ t.bigint :byte_size, null: false
11
+ t.string :checksum, null: false
12
+ t.datetime :created_at, null: false
13
+
14
+ t.index [ :key ], unique: true
15
+ end
16
+
17
+ create_table :active_storage_attachments do |t|
18
+ t.string :name, null: false
19
+ t.references :record, null: false, polymorphic: true, index: false
20
+ t.references :blob, null: false
21
+
22
+ t.datetime :created_at, null: false
23
+
24
+ t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
25
+ t.foreign_key :active_storage_blobs, column: :blob_id
26
+ end
27
+
28
+ create_table :active_storage_variant_records do |t|
29
+ t.belongs_to :blob, null: false, index: false
30
+ t.string :variation_digest, null: false
31
+
32
+ t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true
33
+ t.foreign_key :active_storage_blobs, column: :blob_id
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ Description:
2
+ The extension generator creates stubs for a new TrustyCms extension.
3
+
4
+ The generator takes an extension name as its argument. The extension name may be
5
+ given in CamelCase or under_score and should not be suffixed with 'Extension'.
6
+
7
+ The generator creates an extension directory in vendor/extensions that includes
8
+ <extension_name>_extension.rb, README and Rakefile files as well as db, lib, task,
9
+ and test directories.
10
+
11
+ Example:
12
+ ./script/generate extension AssetManagement
13
+
14
+ This will create:
15
+ vendor/extensions/asset_management/app/controllers
16
+ vendor/extensions/asset_management/app/helpers
17
+ vendor/extensions/asset_management/app/models
18
+ vendor/extensions/asset_management/app/views
19
+ vendor/extensions/asset_management/db/migrate
20
+ vendor/extensions/asset_management/lib/tasks
21
+ vendor/extensions/asset_management/README
22
+ vendor/extensions/asset_management/asset_management_extension.rb
23
+ vendor/extensions/asset_management/lib/tasks/asset_management_extension_tasks.rake
24
+ vendor/extensions/asset_management/spec/controllers
25
+ vendor/extensions/asset_management/spec/models
26
+ vendor/extensions/asset_management/spec/views
27
+ vendor/extensions/asset_management/spec/helpers
28
+ vendor/extensions/asset_management/Rakefile
29
+ vendor/extensions/asset_management/spec/spec_helper.rb
30
+ vendor/extensions/asset_management/spec/spec.opts
@@ -0,0 +1,97 @@
1
+ begin
2
+ require 'git'
3
+ rescue LoadError
4
+ end
5
+
6
+ class ExtensionGenerator < Rails::Generator::NamedBase
7
+ default_options :with_test_unit => false
8
+
9
+ attr_reader :extension_path, :extension_file_name
10
+
11
+ def initialize(runtime_args, runtime_options = {})
12
+ super
13
+ @extension_file_name = "#{file_name}_extension"
14
+ @extension_path = "vendor/extensions/#{file_name}"
15
+ end
16
+
17
+ def manifest
18
+ record do |m|
19
+ m.directory "#{extension_path}/app/controllers"
20
+ m.directory "#{extension_path}/app/helpers"
21
+ m.directory "#{extension_path}/app/models"
22
+ m.directory "#{extension_path}/app/views"
23
+ m.directory "#{extension_path}/config/locales"
24
+ m.directory "#{extension_path}/config/initializers"
25
+ m.directory "#{extension_path}/db/migrate"
26
+ m.directory "#{extension_path}/lib/tasks"
27
+
28
+ m.template 'README.md', "#{extension_path}/README.md"
29
+ m.template 'extension.rb', "#{extension_path}/#{extension_file_name}.rb"
30
+ m.template 'tasks.rake', "#{extension_path}/lib/tasks/#{extension_file_name}_tasks.rake"
31
+ m.template 'en.yml', "#{extension_path}/config/locales/en.yml"
32
+ m.template 'routes.rb', "#{extension_path}/config/routes.rb"
33
+ m.template 'radiant_config.rb', "#{extension_path}/config/initializers/radiant_config.rb"
34
+ m.template 'lib.rb', "#{extension_path}/lib/radiant-#{file_name}-extension.rb"
35
+ m.template 'gemspec.rb', "#{extension_path}/radiant-#{file_name}-extension.gemspec"
36
+
37
+ if options[:with_test_unit]
38
+ m.directory "#{extension_path}/test/fixtures"
39
+ m.directory "#{extension_path}/test/functional"
40
+ m.directory "#{extension_path}/test/unit"
41
+
42
+ m.template 'Rakefile', "#{extension_path}/Rakefile"
43
+ m.template 'test_helper.rb', "#{extension_path}/test/test_helper.rb"
44
+ m.template 'functional_test.rb', "#{extension_path}/test/functional/#{extension_file_name}_test.rb"
45
+ else
46
+ m.directory "#{extension_path}/spec/controllers"
47
+ m.directory "#{extension_path}/spec/models"
48
+ m.directory "#{extension_path}/spec/views"
49
+ m.directory "#{extension_path}/spec/helpers"
50
+ m.directory "#{extension_path}/features/support"
51
+ m.directory "#{extension_path}/features/step_definitions/admin"
52
+
53
+ m.template 'RSpecRakefile', "#{extension_path}/Rakefile"
54
+ m.template 'spec_helper.rb', "#{extension_path}/spec/spec_helper.rb"
55
+ m.file 'spec.opts', "#{extension_path}/spec/spec.opts"
56
+ m.file 'cucumber.yml', "#{extension_path}/cucumber.yml"
57
+ m.template 'cucumber_env.rb', "#{extension_path}/features/support/env.rb"
58
+ m.template 'cucumber_paths.rb', "#{extension_path}/features/support/paths.rb"
59
+ end
60
+ end
61
+ end
62
+
63
+ def class_name
64
+ super.to_name.gsub(' ', '') + 'Extension'
65
+ end
66
+
67
+ def extension_name
68
+ class_name.to_name('Extension')
69
+ end
70
+
71
+ def author_info
72
+ @author_info ||= begin
73
+ Git.global_config
74
+ rescue NameError
75
+ {}
76
+ end
77
+ end
78
+
79
+ def homepage
80
+ author_info['github.user'] ? "http://github.com/#{author_info['github.user']}/radiant-#{file_name}-extension" : "http://example.com/#{file_name}"
81
+ end
82
+
83
+ def author_email
84
+ author_info['user.email'] || 'your email'
85
+ end
86
+
87
+ def author_name
88
+ author_info['user.name'] || 'Your Name'
89
+ end
90
+
91
+ def add_options!(opt)
92
+ opt.separator ''
93
+ opt.separator 'Options:'
94
+ opt.on("--with-test-unit",
95
+ "Use Test::Unit for this extension instead of RSpec") { |v| options[:with_test_unit] = v }
96
+ end
97
+ end
@@ -0,0 +1,6 @@
1
+ # <%= extension_name %>
2
+
3
+ TrustyCms is _so_ freaking awesome, but I made it better through this extension.
4
+
5
+ Created by <%= author_name %>. <%- if author_email.include?('@') -%>If I don't update this content with real details,
6
+ please contact me at <%= author_email %> with annoying messages telling me to do it.<%- end -%>
@@ -0,0 +1,109 @@
1
+ # Determine where the RSpec plugin is by loading the boot
2
+ unless defined? TRUSTY_CMS_ROOT
3
+ ENV["Rails.env"] = "test"
4
+ case
5
+ when ENV["RADIANT_ENV_FILE"]
6
+ require File.dirname(ENV["RADIANT_ENV_FILE"]) + "/boot"
7
+ when File.dirname(__FILE__) =~ %r{vendor/trusty_cms/vendor/extensions}
8
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../")}/config/boot"
9
+ else
10
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../")}/config/boot"
11
+ end
12
+ end
13
+
14
+ require 'rake'
15
+ require 'rdoc/task'
16
+ require 'rake/testtask'
17
+
18
+ rspec_base = File.expand_path(TRUSTY_CMS_ROOT + '/vendor/plugins/rspec/lib')
19
+ $LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
20
+ require 'spec/rake/spectask'
21
+ require 'cucumber'
22
+ require 'cucumber/rake/task'
23
+
24
+ # Cleanup the TRUSTY_CMS_ROOT constant so specs will load the environment
25
+ Object.send(:remove_const, :TRUSTY_CMS_ROOT)
26
+
27
+ extension_root = File.expand_path(File.dirname(__FILE__))
28
+
29
+ task :default => [:spec, :features]
30
+ task :stats => "spec:statsetup"
31
+
32
+ desc "Run all specs in spec directory"
33
+ Spec::Rake::SpecTask.new(:spec) do |t|
34
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
35
+ t.spec_files = FileList['spec/**/*_spec.rb']
36
+ end
37
+
38
+ task :features => 'spec:integration'
39
+
40
+ namespace :spec do
41
+ desc "Run all specs in spec directory with RCov"
42
+ Spec::Rake::SpecTask.new(:rcov) do |t|
43
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
44
+ t.spec_files = FileList['spec/**/*_spec.rb']
45
+ t.rcov = true
46
+ t.rcov_opts = ['--exclude', 'spec', '--rails']
47
+ end
48
+
49
+ desc "Print Specdoc for all specs"
50
+ Spec::Rake::SpecTask.new(:doc) do |t|
51
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
52
+ t.spec_files = FileList['spec/**/*_spec.rb']
53
+ end
54
+
55
+ [:models, :controllers, :views, :helpers].each do |sub|
56
+ desc "Run the specs under spec/#{sub}"
57
+ Spec::Rake::SpecTask.new(sub) do |t|
58
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
59
+ t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
60
+ end
61
+ end
62
+
63
+ desc "Run the Cucumber features"
64
+ Cucumber::Rake::Task.new(:integration) do |t|
65
+ t.fork = true
66
+ t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
67
+ # t.feature_pattern = "#{extension_root}/features/**/*.feature"
68
+ t.profile = "default"
69
+ end
70
+
71
+ # Setup specs for stats
72
+ task :statsetup do
73
+ require 'code_statistics'
74
+ ::STATS_DIRECTORIES << %w(Model\ specs spec/models)
75
+ ::STATS_DIRECTORIES << %w(View\ specs spec/views)
76
+ ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers)
77
+ ::STATS_DIRECTORIES << %w(Helper\ specs spec/views)
78
+ ::CodeStatistics::TEST_TYPES << "Model specs"
79
+ ::CodeStatistics::TEST_TYPES << "View specs"
80
+ ::CodeStatistics::TEST_TYPES << "Controller specs"
81
+ ::CodeStatistics::TEST_TYPES << "Helper specs"
82
+ ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
83
+ end
84
+
85
+ namespace :db do
86
+ namespace :fixtures do
87
+ desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y"
88
+ task :load => :environment do
89
+ require 'active_record/fixtures'
90
+ ActiveRecord::Base.establish_connection(Rails.env.to_sym)
91
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(Rails.root, 'spec', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
92
+ Fixtures.create_fixtures('spec/fixtures', File.basename(fixture_file, '.*'))
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ desc 'Generate documentation for the <%= file_name %> extension.'
100
+ RDoc::Task.new(:rdoc) do |rdoc|
101
+ rdoc.rdoc_dir = 'rdoc'
102
+ rdoc.title = '<%= class_name %>'
103
+ rdoc.options << '--line-numbers' << '--inline-source'
104
+ rdoc.rdoc_files.include('README')
105
+ rdoc.rdoc_files.include('lib/**/*.rb')
106
+ end
107
+
108
+ # Load any custom rakefiles for extension
109
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }