radiant 1.0.0.rc3 → 1.0.0.rc4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of radiant might be problematic. Click here for more details.

Files changed (296) hide show
  1. data/.gitignore +1 -1
  2. data/CHANGELOG.md +172 -4
  3. data/CONTRIBUTORS.md +13 -0
  4. data/Gemfile +6 -4
  5. data/Gemfile.lock +3 -3
  6. data/INSTALL.md +2 -2
  7. data/README.md +1 -1
  8. data/Rakefile +2 -1
  9. data/app/controllers/admin/pages_controller.rb +2 -0
  10. data/app/helpers/admin/node_helper.rb +5 -42
  11. data/app/helpers/admin/resource_helper.rb +2 -0
  12. data/app/models/file_not_found_page.rb +1 -1
  13. data/app/models/menu_renderer.rb +133 -0
  14. data/app/models/page.rb +10 -10
  15. data/app/models/radiant/config.rb +2 -1
  16. data/app/models/standard_tags.rb +15 -3
  17. data/app/views/admin/pages/_node.html.haml +3 -3
  18. data/bin/ci/before_script +13 -0
  19. data/bin/radiant +0 -2
  20. data/config.ru +2 -0
  21. data/config/boot.rb +0 -1
  22. data/config/cucumber.yml +1 -1
  23. data/config/environment.rb +2 -0
  24. data/config/initializers/radiant_config.rb +1 -1
  25. data/config/initializers/rails_patch.rb +2 -0
  26. data/config/locales/en.yml +4 -1
  27. data/config/preinitializer.rb +1 -1
  28. data/db/migrate/20110902203823_add_allowed_children_cache_to_pages.rb +13 -0
  29. data/db/migrate/20111016150725_extend_page_part_content_limit.rb +15 -0
  30. data/db/radiant_dev.db.default +0 -0
  31. data/db/radiant_dev.db.high_five +0 -0
  32. data/db/schema.rb +8 -7
  33. data/features/admin/pages_management.feature +5 -15
  34. data/features/step_definitions/admin/pages_management_steps.rb +17 -0
  35. data/lib/generators/extension/templates/tasks.rake +0 -8
  36. data/lib/generators/instance/instance_generator.rb +2 -3
  37. data/lib/generators/instance/templates/instance_gemfile +22 -22
  38. data/lib/generators/language_extension/language_extension_generator.rb +22 -0
  39. data/lib/generators/language_extension/templates/available_tags.yml +1 -1
  40. data/lib/generators/language_extension/templates/extension.rb +9 -5
  41. data/lib/generators/language_extension/templates/gemspec.rb +24 -0
  42. data/lib/generators/language_extension/templates/lang.yml +1 -1
  43. data/lib/generators/language_extension/templates/lib.rb +8 -0
  44. data/lib/plugins/string_extensions/lib/string_extensions.rb +3 -1
  45. data/lib/radiant.rb +1 -1
  46. data/lib/radiant/admin_ui/region_partials.rb +5 -0
  47. data/lib/radiant/cache.rb +2 -1
  48. data/lib/radiant/extension/script.rb +3 -3
  49. data/lib/radiant/extension_loader.rb +4 -2
  50. data/lib/radiant/extension_path.rb +10 -2
  51. data/lib/radiant/initializer.rb +10 -14
  52. data/lib/radiant/resource_responses.rb +6 -0
  53. data/lib/radiant/setup.rb +5 -2
  54. data/lib/radiant/taggable.rb +7 -1
  55. data/lib/tasks/cucumber.rake +6 -0
  56. data/lib/tasks/database.rake +9 -5
  57. data/lib/tasks/extensions.rake +2 -17
  58. data/lib/tasks/framework.rake +52 -31
  59. data/public/javascripts/admin/assets.js +296 -0
  60. data/public/javascripts/application.js +2 -0
  61. data/public/javascripts/controls.js +963 -0
  62. data/public/javascripts/dragdrop.js +973 -0
  63. data/public/javascripts/effects.js +1128 -0
  64. data/public/javascripts/prototype.js +4320 -0
  65. data/public/stylesheets/admin/main.css +1 -1
  66. data/public/stylesheets/sass/admin/assets.sass +209 -0
  67. data/radiant.gemspec +33 -34
  68. data/spec/ci/database.mysql.yml +7 -0
  69. data/spec/ci/database.postgresql.yml +7 -0
  70. data/spec/ci/database.sqlite.yml +6 -0
  71. data/spec/controllers/site_controller_spec.rb +2 -2
  72. data/spec/datasets/config_dataset.rb +3 -2
  73. data/spec/datasets/home_page_dataset.rb +1 -1
  74. data/spec/datasets/layouts_dataset.rb +1 -1
  75. data/spec/datasets/snippets_dataset.rb +1 -1
  76. data/spec/generators/instance_generator_spec.rb +5 -11
  77. data/spec/helpers/admin/node_helper_spec.rb +1 -50
  78. data/spec/helpers/admin/regions_helper_spec.rb +1 -1
  79. data/spec/lib/radiant/admin_ui/region_partials_spec.rb +1 -1
  80. data/spec/lib/radiant/initializer_spec.rb +2 -7
  81. data/spec/lib/radiant/resource_responses_spec.rb +1 -1
  82. data/spec/lib/radiant/taggable_spec.rb +1 -1
  83. data/spec/lib/task_support_spec.rb +1 -0
  84. data/spec/models/menu_renderer_spec.rb +297 -0
  85. data/spec/models/page_spec.rb +21 -8
  86. data/spec/models/standard_tags_spec.rb +6 -2
  87. data/test/fixtures/extensions/basic/app/helpers/basic_extension_helper.rb +2 -0
  88. data/testthegemgeneration/CHANGELOG.md +721 -0
  89. data/testthegemgeneration/CONTRIBUTORS.md +257 -0
  90. data/testthegemgeneration/Gemfile +57 -0
  91. data/testthegemgeneration/Gemfile.lock +107 -0
  92. data/testthegemgeneration/INSTALL.md +42 -0
  93. data/testthegemgeneration/LICENSE.md +21 -0
  94. data/testthegemgeneration/README.md +84 -0
  95. data/testthegemgeneration/Rakefile +3 -0
  96. data/testthegemgeneration/config.ru +2 -0
  97. data/testthegemgeneration/config/boot.rb +122 -0
  98. data/testthegemgeneration/config/cucumber.yml +7 -0
  99. data/testthegemgeneration/config/database.yml +16 -0
  100. data/testthegemgeneration/config/environment.rb +81 -0
  101. data/testthegemgeneration/config/environments/cucumber.rb +22 -0
  102. data/testthegemgeneration/config/environments/development.rb +17 -0
  103. data/testthegemgeneration/config/environments/production.rb +24 -0
  104. data/testthegemgeneration/config/environments/test.rb +32 -0
  105. data/testthegemgeneration/config/initializers/radiant_config.rb +16 -0
  106. data/testthegemgeneration/config/preinitializer.rb +19 -0
  107. data/testthegemgeneration/config/routes.rb +1 -0
  108. data/testthegemgeneration/db/development.sqlite3.db +0 -0
  109. data/testthegemgeneration/db/schema.rb +142 -0
  110. data/testthegemgeneration/log/development.log +1055 -0
  111. data/testthegemgeneration/public/404.html +8 -0
  112. data/testthegemgeneration/public/500.html +8 -0
  113. data/testthegemgeneration/public/dispatch.cgi +10 -0
  114. data/testthegemgeneration/public/dispatch.fcgi +24 -0
  115. data/testthegemgeneration/public/dispatch.rb +10 -0
  116. data/testthegemgeneration/public/favicon.ico +0 -0
  117. data/testthegemgeneration/public/flash/ZeroClipboard.swf +0 -0
  118. data/testthegemgeneration/public/images/admin/add_tab.png +0 -0
  119. data/testthegemgeneration/public/images/admin/assets/add.png +0 -0
  120. data/testthegemgeneration/public/images/admin/assets/archive_icon.png +0 -0
  121. data/testthegemgeneration/public/images/admin/assets/audio_icon.png +0 -0
  122. data/testthegemgeneration/public/images/admin/assets/audio_thumbnail.png +0 -0
  123. data/testthegemgeneration/public/images/admin/assets/c_icon.png +0 -0
  124. data/testthegemgeneration/public/images/admin/assets/copy.png +0 -0
  125. data/testthegemgeneration/public/images/admin/assets/css_icon.png +0 -0
  126. data/testthegemgeneration/public/images/admin/assets/database_icon.png +0 -0
  127. data/testthegemgeneration/public/images/admin/assets/delete.png +0 -0
  128. data/testthegemgeneration/public/images/admin/assets/document_icon.png +0 -0
  129. data/testthegemgeneration/public/images/admin/assets/document_thumbnail.png +0 -0
  130. data/testthegemgeneration/public/images/admin/assets/flash_icon.png +0 -0
  131. data/testthegemgeneration/public/images/admin/assets/flash_thumbnail.png +0 -0
  132. data/testthegemgeneration/public/images/admin/assets/font_icon.png +0 -0
  133. data/testthegemgeneration/public/images/admin/assets/gzip_icon.png +0 -0
  134. data/testthegemgeneration/public/images/admin/assets/html_icon.png +0 -0
  135. data/testthegemgeneration/public/images/admin/assets/image_icon.png +0 -0
  136. data/testthegemgeneration/public/images/admin/assets/image_thumbnail.png +0 -0
  137. data/testthegemgeneration/public/images/admin/assets/java_icon.png +0 -0
  138. data/testthegemgeneration/public/images/admin/assets/page_edit.png +0 -0
  139. data/testthegemgeneration/public/images/admin/assets/perl_icon.png +0 -0
  140. data/testthegemgeneration/public/images/admin/assets/php_icon.png +0 -0
  141. data/testthegemgeneration/public/images/admin/assets/presentation_icon.png +0 -0
  142. data/testthegemgeneration/public/images/admin/assets/python_icon.png +0 -0
  143. data/testthegemgeneration/public/images/admin/assets/reorder_assets.png +0 -0
  144. data/testthegemgeneration/public/images/admin/assets/ruby_icon.png +0 -0
  145. data/testthegemgeneration/public/images/admin/assets/script_icon.png +0 -0
  146. data/testthegemgeneration/public/images/admin/assets/spreadsheet_icon.png +0 -0
  147. data/testthegemgeneration/public/images/admin/assets/tar_icon.png +0 -0
  148. data/testthegemgeneration/public/images/admin/assets/unknown_icon.png +0 -0
  149. data/testthegemgeneration/public/images/admin/assets/unknown_thumbnail.png +0 -0
  150. data/testthegemgeneration/public/images/admin/assets/video_icon.png +0 -0
  151. data/testthegemgeneration/public/images/admin/assets/video_thumbnail.png +0 -0
  152. data/testthegemgeneration/public/images/admin/assets/xml_icon.png +0 -0
  153. data/testthegemgeneration/public/images/admin/assets/zip_icon.png +0 -0
  154. data/testthegemgeneration/public/images/admin/avatar_32x32.png +0 -0
  155. data/testthegemgeneration/public/images/admin/avatar_64x64.png +0 -0
  156. data/testthegemgeneration/public/images/admin/avatar_96x96.png +0 -0
  157. data/testthegemgeneration/public/images/admin/brown_bottom_line.gif +0 -0
  158. data/testthegemgeneration/public/images/admin/calendar_down.gif +0 -0
  159. data/testthegemgeneration/public/images/admin/collapse.png +0 -0
  160. data/testthegemgeneration/public/images/admin/draft_page.png +0 -0
  161. data/testthegemgeneration/public/images/admin/expand.png +0 -0
  162. data/testthegemgeneration/public/images/admin/image.png +0 -0
  163. data/testthegemgeneration/public/images/admin/javascript.png +0 -0
  164. data/testthegemgeneration/public/images/admin/layout.png +0 -0
  165. data/testthegemgeneration/public/images/admin/metadata_toggle.png +0 -0
  166. data/testthegemgeneration/public/images/admin/minus.png +0 -0
  167. data/testthegemgeneration/public/images/admin/minus_disabled.png +0 -0
  168. data/testthegemgeneration/public/images/admin/minus_grey.png +0 -0
  169. data/testthegemgeneration/public/images/admin/navigation_secondary_separator.gif +0 -0
  170. data/testthegemgeneration/public/images/admin/page.png +0 -0
  171. data/testthegemgeneration/public/images/admin/plus.png +0 -0
  172. data/testthegemgeneration/public/images/admin/plus_disabled.png +0 -0
  173. data/testthegemgeneration/public/images/admin/plus_grey.png +0 -0
  174. data/testthegemgeneration/public/images/admin/popup_border_background.png +0 -0
  175. data/testthegemgeneration/public/images/admin/popup_border_bottom_left.png +0 -0
  176. data/testthegemgeneration/public/images/admin/popup_border_bottom_right.png +0 -0
  177. data/testthegemgeneration/public/images/admin/popup_border_top_left.png +0 -0
  178. data/testthegemgeneration/public/images/admin/popup_border_top_right.png +0 -0
  179. data/testthegemgeneration/public/images/admin/search.png +0 -0
  180. data/testthegemgeneration/public/images/admin/single_form_shadow.png +0 -0
  181. data/testthegemgeneration/public/images/admin/snippet.png +0 -0
  182. data/testthegemgeneration/public/images/admin/spinner.gif +0 -0
  183. data/testthegemgeneration/public/images/admin/status_background.png +0 -0
  184. data/testthegemgeneration/public/images/admin/status_bottom_left.png +0 -0
  185. data/testthegemgeneration/public/images/admin/status_bottom_right.png +0 -0
  186. data/testthegemgeneration/public/images/admin/status_spinner.gif +0 -0
  187. data/testthegemgeneration/public/images/admin/status_top_left.png +0 -0
  188. data/testthegemgeneration/public/images/admin/status_top_right.png +0 -0
  189. data/testthegemgeneration/public/images/admin/stylesheet.png +0 -0
  190. data/testthegemgeneration/public/images/admin/tab_close.png +0 -0
  191. data/testthegemgeneration/public/images/admin/upload.png +0 -0
  192. data/testthegemgeneration/public/images/admin/virtual_page.png +0 -0
  193. data/testthegemgeneration/public/images/radiant/radiant-badge-color.png +0 -0
  194. data/testthegemgeneration/public/images/roasters/banner.jpg +0 -0
  195. data/testthegemgeneration/public/images/roasters/closelabel.gif +0 -0
  196. data/testthegemgeneration/public/images/roasters/comment.png +0 -0
  197. data/testthegemgeneration/public/images/roasters/gallery1.jpg +0 -0
  198. data/testthegemgeneration/public/images/roasters/gallery2.jpg +0 -0
  199. data/testthegemgeneration/public/images/roasters/gallery3.jpg +0 -0
  200. data/testthegemgeneration/public/images/roasters/gallery4.jpg +0 -0
  201. data/testthegemgeneration/public/images/roasters/gift.gif +0 -0
  202. data/testthegemgeneration/public/images/roasters/green.gif +0 -0
  203. data/testthegemgeneration/public/images/roasters/nav-background.gif +0 -0
  204. data/testthegemgeneration/public/images/roasters/nav-divider.gif +0 -0
  205. data/testthegemgeneration/public/images/roasters/nextlabel.gif +0 -0
  206. data/testthegemgeneration/public/images/roasters/open.gif +0 -0
  207. data/testthegemgeneration/public/images/roasters/preview-1.jpg +0 -0
  208. data/testthegemgeneration/public/images/roasters/preview.jpg +0 -0
  209. data/testthegemgeneration/public/images/roasters/prevlabel.gif +0 -0
  210. data/testthegemgeneration/public/images/roasters/prize.gif +0 -0
  211. data/testthegemgeneration/public/images/roasters/recycle.gif +0 -0
  212. data/testthegemgeneration/public/images/roasters/rss.gif +0 -0
  213. data/testthegemgeneration/public/images/roasters/thumb-grinder.jpg +0 -0
  214. data/testthegemgeneration/public/images/roasters/thumb-grower.jpg +0 -0
  215. data/testthegemgeneration/public/images/roasters/thumb-roaster.jpg +0 -0
  216. data/testthegemgeneration/public/images/roasters/truck.gif +0 -0
  217. data/testthegemgeneration/public/javascripts/admin/application.js +94 -0
  218. data/testthegemgeneration/public/javascripts/admin/assets.js +296 -0
  219. data/testthegemgeneration/public/javascripts/admin/codearea.js +165 -0
  220. data/testthegemgeneration/public/javascripts/admin/controls.js +965 -0
  221. data/testthegemgeneration/public/javascripts/admin/cookie.js +80 -0
  222. data/testthegemgeneration/public/javascripts/admin/dateinput.js +402 -0
  223. data/testthegemgeneration/public/javascripts/admin/dragdrop.js +974 -0
  224. data/testthegemgeneration/public/javascripts/admin/dropdown.js +216 -0
  225. data/testthegemgeneration/public/javascripts/admin/effects.js +1122 -0
  226. data/testthegemgeneration/public/javascripts/admin/lowpro.js +340 -0
  227. data/testthegemgeneration/public/javascripts/admin/overrides.js +1 -0
  228. data/testthegemgeneration/public/javascripts/admin/page_preview.js +41 -0
  229. data/testthegemgeneration/public/javascripts/admin/pagefield.js +54 -0
  230. data/testthegemgeneration/public/javascripts/admin/pagestatus.js +17 -0
  231. data/testthegemgeneration/public/javascripts/admin/popup.js +339 -0
  232. data/testthegemgeneration/public/javascripts/admin/prototype.js +4874 -0
  233. data/testthegemgeneration/public/javascripts/admin/ruledtable.js +13 -0
  234. data/testthegemgeneration/public/javascripts/admin/shortcuts.js +27 -0
  235. data/testthegemgeneration/public/javascripts/admin/sitemap.js +149 -0
  236. data/testthegemgeneration/public/javascripts/admin/status.js +233 -0
  237. data/testthegemgeneration/public/javascripts/admin/tabcontrol.js +123 -0
  238. data/testthegemgeneration/public/javascripts/admin/toggle.js +430 -0
  239. data/testthegemgeneration/public/javascripts/admin/utility.js +53 -0
  240. data/testthegemgeneration/public/javascripts/admin/validationerror.js +18 -0
  241. data/testthegemgeneration/public/javascripts/application.js +2 -0
  242. data/testthegemgeneration/public/javascripts/controls.js +963 -0
  243. data/testthegemgeneration/public/javascripts/dragdrop.js +973 -0
  244. data/testthegemgeneration/public/javascripts/effects.js +1128 -0
  245. data/testthegemgeneration/public/javascripts/prototype.js +4320 -0
  246. data/testthegemgeneration/public/loading-iframe.html +11 -0
  247. data/testthegemgeneration/public/robots.txt +1 -0
  248. data/testthegemgeneration/public/stylesheets/admin/assets.css +1 -0
  249. data/testthegemgeneration/public/stylesheets/admin/main.css +1 -0
  250. data/testthegemgeneration/public/stylesheets/admin/overrides.css +0 -0
  251. data/testthegemgeneration/public/stylesheets/sass/admin/_base.sass +17 -0
  252. data/testthegemgeneration/public/stylesheets/sass/admin/assets.sass +209 -0
  253. data/testthegemgeneration/public/stylesheets/sass/admin/main.sass +27 -0
  254. data/testthegemgeneration/public/stylesheets/sass/admin/modules/_boxes.sass +6 -0
  255. data/testthegemgeneration/public/stylesheets/sass/admin/modules/_links.sass +18 -0
  256. data/testthegemgeneration/public/stylesheets/sass/admin/overrides.sass +2 -0
  257. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_actions.sass +96 -0
  258. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_avatars.sass +10 -0
  259. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_content.sass +58 -0
  260. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_dateinput.sass +62 -0
  261. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_deprecated.sass +55 -0
  262. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_dropdown.sass +28 -0
  263. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_footer.sass +12 -0
  264. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_forms.sass +322 -0
  265. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_header.sass +114 -0
  266. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_index.sass +147 -0
  267. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_layout.sass +10 -0
  268. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_messages.sass +10 -0
  269. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_popup.sass +213 -0
  270. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_tabcontrol.sass +72 -0
  271. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_toolbar.sass +31 -0
  272. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_typography.sass +60 -0
  273. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_validations.sass +19 -0
  274. data/testthegemgeneration/script/about +4 -0
  275. data/testthegemgeneration/script/autospec +5 -0
  276. data/testthegemgeneration/script/breakpointer +3 -0
  277. data/testthegemgeneration/script/console +3 -0
  278. data/testthegemgeneration/script/cucumber +10 -0
  279. data/testthegemgeneration/script/dbconsole +3 -0
  280. data/testthegemgeneration/script/extension +5 -0
  281. data/testthegemgeneration/script/generate +6 -0
  282. data/testthegemgeneration/script/performance/benchmarker +3 -0
  283. data/testthegemgeneration/script/performance/profiler +3 -0
  284. data/testthegemgeneration/script/performance/request +3 -0
  285. data/testthegemgeneration/script/process/inspector +3 -0
  286. data/testthegemgeneration/script/process/reaper +3 -0
  287. data/testthegemgeneration/script/process/spawner +3 -0
  288. data/testthegemgeneration/script/process/spinner +3 -0
  289. data/testthegemgeneration/script/runner +3 -0
  290. data/testthegemgeneration/script/server +3 -0
  291. data/testthegemgeneration/script/spec +5 -0
  292. data/testthegemgeneration/script/spec_server +116 -0
  293. data/testthegemgeneration/script/version +5 -0
  294. data/testthegemgeneration/tmp/radiant_config_cache.txt +0 -0
  295. metadata +845 -133
  296. data/public/stylesheets/admin/base.css +0 -1
@@ -20,6 +20,8 @@ class LanguageExtensionGenerator < Rails::Generator::NamedBase
20
20
  # m.template 'tasks.rake', "#{extension_path}/lib/tasks/#{extension_file_name}_tasks.rake"
21
21
  m.template 'lang.yml', "#{extension_path}/config/locales/#{localization_name}.yml"
22
22
  m.template 'available_tags.yml', "#{extension_path}/config/locales/#{localization_name}_available_tags.yml"
23
+ m.template 'lib.rb', "#{extension_path}/lib/radiant-#{file_name}_language_pack-extension.rb"
24
+ m.template 'gemspec.rb', "#{extension_path}/radiant-#{file_name}_language_pack-extension.gemspec"
23
25
  end
24
26
 
25
27
  end
@@ -32,6 +34,26 @@ class LanguageExtensionGenerator < Rails::Generator::NamedBase
32
34
  class_name.to_name('Extension')
33
35
  end
34
36
 
37
+ def author_info
38
+ @author_info ||= begin
39
+ Git.global_config
40
+ rescue NameError
41
+ {}
42
+ end
43
+ end
44
+
45
+ def homepage
46
+ author_info['github.user'] ? "http://github.com/#{author_info['github.user']}/radiant-#{file_name}-extension" : "http://example.com/#{file_name}"
47
+ end
48
+
49
+ def author_email
50
+ author_info['user.email'] || 'your email'
51
+ end
52
+
53
+ def author_name
54
+ author_info['user.name'] || 'Your Name'
55
+ end
56
+
35
57
  def add_options!(opt)
36
58
  # opt.separator ''
37
59
  # opt.separator 'Options:'
@@ -1,5 +1,5 @@
1
1
  ---
2
- <%= localization_name %>::
2
+ <%= localization_name %>:
3
3
  desc:
4
4
  author:
5
5
  Renders the name of the author of the current page.
@@ -1,8 +1,12 @@
1
+ # Uncomment this if you reference any of your controllers in activate
2
+ # require_dependency "application_controller"
3
+ require "radiant-<%= file_name %>_language_pack-extension"
4
+
1
5
  class <%= class_name %> < Radiant::Extension
2
- version "1.0"
3
- description "<%= localization_name %> language pack for Radiant CMS"
4
- url "http://yourwebsite.com/<%= file_name %>"
5
-
6
+ version Radiant<%= class_name %>::VERSION
7
+ description Radiant<%= class_name %>::DESCRIPTION
8
+ url Radiant<%= class_name %>::URL
9
+
6
10
  def activate
7
11
  end
8
- end
12
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "radiant-<%= file_name %>_language_pack-extension"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "radiant-<%= file_name %>_language_pack-extension"
7
+ s.version = Radiant<%= class_name %>::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = Radiant<%= class_name %>::AUTHORS
10
+ s.email = Radiant<%= class_name %>::EMAIL
11
+ s.homepage = Radiant<%= class_name %>::URL
12
+ s.summary = Radiant<%= class_name %>::SUMMARY
13
+ s.description = Radiant<%= class_name %>::DESCRIPTION
14
+
15
+ ignores = if File.exist?('.gitignore')
16
+ File.read('.gitignore').split("\n").inject([]) {|a,p| a + Dir[p] }
17
+ else
18
+ []
19
+ end
20
+ s.files = Dir['**/*'] - ignores
21
+ s.test_files = Dir['test/**/*','spec/**/*','features/**/*'] - ignores
22
+ # s.executables = Dir['bin/*'] - ignores
23
+ s.require_paths = ["lib"]
24
+ end
@@ -149,7 +149,7 @@
149
149
  remove_warning: 'Are you sure you want to <strong class="warning">permanently remove</strong> the following snippet?'
150
150
  users:
151
151
  remove_warning: 'Are you sure you want to <strong class="warning">permanently remove</strong> the following user?'
152
- this_file_language: "English"
152
+ this_file_language: "<%= file_name.capitalize %>"
153
153
  time:
154
154
  am: 'am'
155
155
  formats:
@@ -0,0 +1,8 @@
1
+ module Radiant<%= class_name %>
2
+ VERSION = "1.0.0"
3
+ SUMMARY = "<%= localization_name.capitalize %> language pack for Radiant CMS"
4
+ DESCRIPTION = "Adds <%= localization_name.capitalize %> translations to the Radiant CMS interface."
5
+ URL = "<%= homepage %>"
6
+ AUTHORS = ["<%= author_name %>"]
7
+ EMAIL = ["<%= author_email %>"]
8
+ end
@@ -1,3 +1,5 @@
1
+ require 'stringex'
2
+
1
3
  class String
2
4
  def symbolize
3
5
  self.gsub(/[^A-Za-z0-9]+/, "_").gsub(/(^_+|_+$)/, "").underscore.to_sym
@@ -13,7 +15,7 @@ class String
13
15
 
14
16
  unless methods.include?('parameterize')
15
17
  def parameterize(sep = '-')
16
- ActiveSupport::Inflector.parameterize(self, sep)
18
+ remove_formatting.downcase.replace_whitespace(sep).collapse(sep)
17
19
  end
18
20
  end
19
21
 
@@ -6,7 +6,7 @@ unless defined? Radiant::Version
6
6
  Major = '1'
7
7
  Minor = '0'
8
8
  Tiny = '0'
9
- Patch = 'rc3' # set to nil for normal release
9
+ Patch = 'rc4' # set to nil for normal release
10
10
 
11
11
  class << self
12
12
  def to_s
@@ -10,6 +10,11 @@ class Radiant::AdminUI::RegionPartials
10
10
 
11
11
  def method_missing(method, *args, &block)
12
12
  if block_given?
13
+ # Ruby 1.9.2 yields self in instance_eval... see https://gist.github.com/479572
14
+ # lambdas are as strict as methods in 1.9.x, making sure that the args match, Procs are not.
15
+ if RUBY_VERSION =~ /^1\.9/ and block.lambda? and block.arity != 1
16
+ raise "You can only pass a proc ('Proc.new') or a lambda that takes exactly one arg (for self) to Radiant::AdminUI::RegionPartials' method_missing."
17
+ end
13
18
  @partials[method.to_s] = @template.capture(&block)
14
19
  else
15
20
  @partials[method.to_s]
@@ -89,7 +89,8 @@ module Radiant
89
89
  end
90
90
  end
91
91
 
92
- # Add our classes as fake constants in the right place
92
+ # Rack::Cache will look for a constant matching the uri scheme given to the :metastore and :entitystore options
93
+ # when initialising the Middleware
93
94
  class Rack::Cache::EntityStore
94
95
  RADIANT = Radiant::Cache::EntityStore
95
96
  end
@@ -41,7 +41,7 @@ Supports: Radiant #{supports_radiant_version}
41
41
  extension = command[2]
42
42
  task = "radiant:extensions:#{extension}:#{command[3].split[0]}"
43
43
  else
44
- extension = task = command.to_s
44
+ extension = task = command[0]
45
45
  end
46
46
  rake_file = File.join(RAILS_ROOT, 'vendor', 'extensions', extension) + '/lib/tasks/' + extension + '_extension_tasks.rake'
47
47
  load rake_file if File.exist? rake_file
@@ -343,7 +343,7 @@ module Radiant
343
343
  class Help
344
344
  def initialize(args=[])
345
345
  command = args.shift
346
- command = 'help' unless self.class.instance_methods(false).include?(command)
346
+ command = 'help' unless self.class.instance_methods(false).collect {|im| im.to_s}.include?(command.to_s)
347
347
  send(command)
348
348
  end
349
349
 
@@ -387,7 +387,7 @@ module Radiant
387
387
 
388
388
  private
389
389
  def command_names
390
- (Radiant::Extension::Script.constants - ['Util']).sort.map {|n| n.underscore }.join(", ")
390
+ (Radiant::Extension::Script.constants - ['Util']).sort.map {|n| n.to_s.underscore }.join(", ")
391
391
  end
392
392
  end
393
393
  end
@@ -48,7 +48,7 @@ module Radiant
48
48
  # extension_loader.paths(:controller) #=> ['extension/app/controllers', 'extension/app/controllers']
49
49
  # extension_loader.paths(:eager_load) #=> ['extension/app/controllers', 'extension/app/models', 'extension/app/helpers']
50
50
  #
51
- # For compatibility with the old loader, there are also corresponding +type_paths+
51
+ # For compatibility with the old loader, there are corresponding +type_paths+ methods.
52
52
  # There are also (deprecated) +add_type_paths+ methods.
53
53
  #
54
54
  def paths(type)
@@ -57,7 +57,7 @@ module Radiant
57
57
 
58
58
  # Loads but does not activate all the extensions that have been enabled, in the configured order
59
59
  # (which defaults to alphabetically). If an extension fails to load an error will be logged
60
- # but application startup will not halt. If an extension doesn't exist, a LoadError will be raised
60
+ # but application startup will continue. If an extension doesn't exist, a LoadError will be raised
61
61
  # and startup will halt.
62
62
  #
63
63
  def load_extensions
@@ -114,6 +114,8 @@ module Radiant
114
114
  ExtensionPath.from_path(path, name)
115
115
  end
116
116
 
117
+ # For compatibility with old calls probably still to be found in some extensions.
118
+ #
117
119
  %w{controller model view metal plugin load locale}.each do |type|
118
120
  define_method("#{type}_paths".to_sym) do
119
121
  paths(type)
@@ -126,6 +126,14 @@ module Radiant
126
126
  check_subdirectory("app/metal")
127
127
  end
128
128
 
129
+ # Returns a list of all the rake task files found within this extension root.
130
+ #
131
+ def rake_task_paths
132
+ if check_subdirectory("lib/tasks")
133
+ Dir[File.join("#{path}","lib/tasks/**","*.rake")]
134
+ end
135
+ end
136
+
129
137
  # Returns a list of extension subdirectories that should be marked for eager loading. At the moment that
130
138
  # includes all the controller, model and helper paths. The main purpose here is to ensure that extension
131
139
  # controllers are loaded before running cucumber features, and there may be a better way to achieve that.
@@ -158,7 +166,7 @@ module Radiant
158
166
  #
159
167
  def enabled
160
168
  enabled_extensions = Radiant.configuration.enabled_extensions
161
- @@known_paths.values_at(*enabled_extensions)
169
+ @@known_paths.values_at(*enabled_extensions).compact
162
170
  end
163
171
 
164
172
  # Returns a list of the root paths to all the enabled extensions, in the configured order.
@@ -172,7 +180,7 @@ module Radiant
172
180
  enabled.map{|ep| ep.send(m)}.flatten.compact
173
181
  end
174
182
  end
175
- [:locale_paths, :view_paths, :metal_paths].each do |m|
183
+ [:locale_paths, :view_paths, :metal_paths, :rake_task_paths].each do |m|
176
184
  define_method(m) do
177
185
  enabled.map{|ep| ep.send(m)}.flatten.compact.reverse
178
186
  end
@@ -49,10 +49,9 @@ module Radiant
49
49
  # * to notice that some gems and plugins are in fact radiant extensions
50
50
  # * to notice that some radiant extensions add load paths (for plugins, controllers, metal, etc)
51
51
 
52
- attr_accessor :extension_paths, :ignored_extensions, :view_paths
52
+ attr_accessor :extension_paths, :ignored_extensions
53
53
 
54
54
  def initialize #:nodoc:
55
- self.view_paths = []
56
55
  self.extension_paths = default_extension_paths
57
56
  self.ignored_extensions = []
58
57
  super
@@ -382,22 +381,19 @@ module Radiant
382
381
  admin.initialize_nav
383
382
  end
384
383
 
385
- # Adds extension view paths and then hooks them into ActionMailer and ActionController
384
+ # This adds extension view paths to the standard Rails::Initializer method.
385
+ # In environments that don't cache templates it reloads the path set on each request,
386
+ # so that new extension paths are noticed without a restart.
386
387
  #
387
388
  def initialize_framework_views
388
- view_paths = [].tap do |arr|
389
- arr << configuration.view_path unless configuration.view_paths.include?(configuration.view_path)
390
- arr.concat(configuration.view_paths)
391
- arr.concat(extension_loader.paths(:view))
392
- arr.reverse!
389
+ view_paths = extension_loader.paths(:view).push(configuration.view_path)
390
+ if ActionController::Base.view_paths.blank? || !ActionView::Base.cache_template_loading?
391
+ ActionController::Base.view_paths = ActionView::Base.process_view_paths(view_paths)
393
392
  end
394
- if configuration.frameworks.include?(:action_mailer) || defined?(ActionMailer::Base)
395
- ActionMailer::Base.view_paths = ActionView::Base.process_view_paths(view_paths)
393
+ if configuration.frameworks.include?(:action_mailer) && ActionMailer::Base.view_paths.blank? || !ActionView::Base.cache_template_loading?
394
+ ActionMailer::Base.view_paths = ActionView::Base.process_view_paths(view_paths) if configuration.frameworks.include?(:action_mailer)
396
395
  end
397
- view_paths.each do |vp|
398
- ActionController::Base.prepend_view_path(vp) unless ActionController::Base.view_paths.include?(vp)
399
- end
400
- end
396
+ end
401
397
 
402
398
  # Extends the Rails initializer to make sure that extension controller paths are available when routes
403
399
  # are initialized.
@@ -37,6 +37,12 @@ module Radiant
37
37
  def wrap(proc)
38
38
  # Makes sure our response blocks get evaluated in the right context
39
39
  lambda do
40
+ # Ruby 1.9.2 yields self in instance_eval... see https://gist.github.com/479572
41
+ # lambdas are as strict as methods in 1.9.x, making sure that the args match, Procs are not.
42
+ if RUBY_VERSION =~ /^1\.9/ and proc.lambda? and proc.arity != 1
43
+ raise "You can only pass a proc ('Proc.new') or a lambda that takes exactly one arg (for self) to the wrap method."
44
+ end
45
+
40
46
  instance_eval(&proc)
41
47
  end
42
48
  end
@@ -48,7 +48,7 @@ module Radiant
48
48
  step { Radiant::Config['admin.title' ] = 'Radiant CMS' }
49
49
  step { Radiant::Config['admin.subtitle'] = 'Publishing for Small Teams' }
50
50
  step { Radiant::Config['defaults.page.parts' ] = 'body, extended' }
51
- step { Radiant::Config['defaults.page.status' ] = 'draft' }
51
+ step { Radiant::Config['defaults.page.status' ] = 'Draft' }
52
52
  step { Radiant::Config['defaults.page.filter' ] = nil }
53
53
  step { Radiant::Config['defaults.page.fields'] = 'Keywords, Description' }
54
54
  step { Radiant::Config['session_timeout'] = 2.weeks }
@@ -131,7 +131,10 @@ module Radiant
131
131
  "#{Dir.pwd}/db/templates/#{filename}"
132
132
  ] +
133
133
  Dir.glob("#{RADIANT_ROOT}/vendor/extensions/**/db/templates/#{filename}") +
134
- Dir.glob("#{Rails.root}/vendor/extensions/**/db/templates/#{filename}")
134
+ Dir.glob("#{Rails.root}/vendor/extensions/**/db/templates/#{filename}") +
135
+ Radiant::Extension.descendants.inject([]) do |r, d|
136
+ r << "#{d.root}/db/templates/#{filename}"
137
+ end
135
138
  ).find { |name| File.file?(name) }
136
139
  end
137
140
 
@@ -31,7 +31,13 @@ module Radiant::Taggable
31
31
  end
32
32
 
33
33
  def render_tag(name, tag_binding)
34
- send "tag:#{name}", tag_binding
34
+ tag_method_name = "tag:#{name}"
35
+ tag_method = method(tag_method_name)
36
+ if tag_method.arity == 0
37
+ tag_method.call
38
+ else
39
+ tag_method.call tag_binding
40
+ end
35
41
  end
36
42
 
37
43
  def tags
@@ -26,6 +26,12 @@ begin
26
26
  t.profile = 'wip'
27
27
  end
28
28
 
29
+ Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
30
+ t.binary = vendored_cucumber_bin
31
+ t.fork = true # You may get faster startup if you set this to false
32
+ t.profile = 'rerun'
33
+ end
34
+
29
35
  desc 'Run all features'
30
36
  task :all => [:ok, :wip]
31
37
  end
@@ -30,11 +30,6 @@ namespace :db do
30
30
  ActiveRecord::Base.connection.tables.each do |table|
31
31
  ActiveRecord::Migration.drop_table table
32
32
  end
33
-
34
- # run migrations in Radiant.root/db/migrate
35
- Rake::Task["db:migrate:radiant"].invoke
36
-
37
- # run migrations in Rails.root/db/migrate
38
33
  Rake::Task["db:migrate"].invoke
39
34
  else
40
35
  say "Task cancelled."
@@ -64,6 +59,15 @@ To find radiant extensions, please visit http://ext.radiantcms.org.
64
59
  }
65
60
  end
66
61
 
62
+ desc "Migrate the database through all available migration scripts (looks for db/migrate/* in radiant, in extensions and in your site) and update db/schema.rb by invoking db:schema:dump. Turn off output with VERBOSE=false."
63
+ task :migrate => :environment do
64
+ Rake::Task['db:migrate:radiant'].invoke
65
+ Rake::Task['db:migrate:extensions'].invoke
66
+ ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
67
+ ActiveRecord::Migrator.migrate("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
68
+ Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
69
+ end
70
+
67
71
  namespace :migrate do
68
72
  desc "Migrates the database through steps defined in the core radiant distribution. Usual db:migrate options can apply."
69
73
  task :radiant => :environment do
@@ -75,26 +75,11 @@ namespace :spec do
75
75
  end
76
76
 
77
77
  namespace :radiant do
78
- # TODO: load previously copied tasks just once.
79
- # If update_all is run multiple times, previously copied tasks will be loaded twice,
80
- # once from the local copy (RAILS_ROOT/lib/tasks) and once from the gem source.
81
- task :extensions => :environment do
82
- Radiant::ExtensionLoader.instance.extensions.each do |extension|
83
- next if extension.root.starts_with? RAILS_ROOT
84
- Dir[File.join extension.root, %w(lib tasks *.rake)].sort.each { |task| load task }
85
- end
86
- end
87
78
  namespace :extensions do
88
79
  desc "Runs update asset task for all extensions"
89
- task :update_all => [:environment, 'radiant:extensions'] do
90
- extension_names = Radiant::ExtensionLoader.instance.extensions.map { |f| f.to_s.underscore.sub(/_extension$/, '') }
91
- extension_update_tasks = extension_names.map { |n| "radiant:extensions:#{n}:update" }.select { |t| Rake::Task.task_defined?(t) }
80
+ task :update_all => [:environment] do
81
+ extension_update_tasks = Radiant.configuration.enabled_extensions.map { |n| "radiant:extensions:#{n}:update" }.select { |t| Rake::Task.task_defined?(t) }
92
82
  extension_update_tasks.each {|t| Rake::Task[t].invoke }
93
83
  end
94
84
  end
95
85
  end
96
-
97
- # Load any custom rakefiles from extensions
98
- [RAILS_ROOT, RADIANT_ROOT].uniq.each do |root|
99
- Dir[root + '/vendor/extensions/*/lib/tasks/*.rake'].sort.each { |ext| load ext }
100
- end
@@ -63,20 +63,10 @@ unless File.directory? "#{RAILS_ROOT}/app"
63
63
 
64
64
  desc "Update configs, scripts, html, images, sass, stylesheets and javascripts from Radiant."
65
65
  task :update do
66
- tasks = %w{scripts javascripts configs static_html images sass stylesheets cached_assets}
66
+ tasks = %w{scripts javascripts configs static_html images sass stylesheets cached_assets bundle}
67
67
  tasks = tasks & ENV['ONLY'].split(',') if ENV['ONLY']
68
68
  tasks = tasks - ENV['EXCEPT'].split(',') if ENV['EXCEPT']
69
-
70
- instance_gemfile_path = RAILS_ROOT + '/Gemfile'
71
- puts instance_gemfile_path
72
- unless File.exists?(instance_gemfile_path)
73
- File.open(instance_gemfile_path, 'w') do |f|
74
- radiant_version = Radiant::Version.to_s
75
- sqlite_version = Gem.loaded_specs['sqlite3'].version.to_s
76
- f.write ERB.new(File.read("#{File.dirname(__FILE__)}/../generators/instance/templates/instance_gemfile")).result(binding)
77
- end
78
- end
79
-
69
+
80
70
  tasks.each do |task|
81
71
  puts "* Updating #{task}"
82
72
  Rake::Task["radiant:update:#{task}"].invoke
@@ -120,6 +110,45 @@ unless File.directory? "#{RAILS_ROOT}/app"
120
110
  TaskSupport.cache_admin_js
121
111
  end
122
112
 
113
+ desc "Update Gemfile from your current radiant install, backing up if required."
114
+ task :bundle do
115
+ require 'erb'
116
+ file = "#{RAILS_ROOT}/Gemfile"
117
+ tmpfile = "#{RAILS_ROOT}/Gemfile.tmp"
118
+ genfile = "#{File.dirname(__FILE__)}/../generators/instance/templates/instance_gemfile"
119
+ backfile = "#{RAILS_ROOT}/Gemfile.bak"
120
+
121
+ db_gems = {
122
+ 'sqlite3' => 'sqlite3',
123
+ 'mysql' => 'mysql',
124
+ 'pg' => 'postgresql',
125
+ 'db2' => 'db2',
126
+ 'activerecord-sqlserver-adapter' => 'sqlserver'
127
+ }
128
+ active_db_gem = db_gems.keys.find { |g| Gem.loaded_specs[g] } || 'sqlite3'
129
+
130
+ File.open(tmpfile, 'w') do |f|
131
+ radiant_version = Radiant::Version.to_s
132
+ db = db_gems[active_db_gem]
133
+ f.write ERB.new(File.read(genfile)).result(binding)
134
+ end
135
+
136
+ unless File.exist?(file) && FileUtils.compare_file(file, tmpfile)
137
+ warning = ""
138
+ if File.exist?(file)
139
+ FileUtils.cp(file, backfile)
140
+ warning << "** WARNING **
141
+ Your old Gemfile has been saved as Gemfile.bak. If you had radiant extensions or other gems in that file, please copy those lines to the new file. After checking the Gemfile, please run `bundle install` to update your application."
142
+ else
143
+ warning << "** WARNING **
144
+ A Gemfile has been created in your application directory. If you have config.gem entries in your old environment.rb (now .bak), please move them to the Gemfile. When you're happy with it, run `bundle install` to install the gems."
145
+ end
146
+ FileUtils.cp(tmpfile, file)
147
+ end
148
+ FileUtils.rm(tmpfile)
149
+ puts warning
150
+ end
151
+
123
152
  desc "Update configuration files from your current radiant install"
124
153
  task :configs do
125
154
  require 'erb'
@@ -128,54 +157,46 @@ unless File.directory? "#{RAILS_ROOT}/app"
128
157
  :development => "#{RAILS_ROOT}/config/environments/development.rb",
129
158
  :test => "#{RAILS_ROOT}/config/environments/test.rb",
130
159
  :cucumber => "#{RAILS_ROOT}/config/environments/cucumber.rb",
131
- :production => "#{RAILS_ROOT}/config/environments/production.rb",
132
- :gemfile => "#{RAILS_ROOT}/Gemfile"
160
+ :production => "#{RAILS_ROOT}/config/environments/production.rb"
133
161
  }
134
162
  tmps = {
135
163
  :env => "#{RAILS_ROOT}/config/environment.tmp",
136
164
  :development => "#{RAILS_ROOT}/config/environments/development.tmp",
137
165
  :test => "#{RAILS_ROOT}/config/environments/test.tmp",
138
166
  :cucumber => "#{RAILS_ROOT}/config/environments/cucumber.rb",
139
- :production => "#{RAILS_ROOT}/config/environments/production.tmp",
140
- :gemfile => "#{RAILS_ROOT}/Gemfile.tmp"
167
+ :production => "#{RAILS_ROOT}/config/environments/production.tmp"
141
168
  }
142
169
  gens = {
143
170
  :env => "#{File.dirname(__FILE__)}/../generators/instance/templates/instance_environment.rb",
144
171
  :development => "#{File.dirname(__FILE__)}/../../config/environments/development.rb",
145
172
  :test => "#{File.dirname(__FILE__)}/../../config/environments/test.rb",
146
173
  :cucumber => "#{File.dirname(__FILE__)}/../../config/environments/cucumber.rb",
147
- :production => "#{File.dirname(__FILE__)}/../../config/environments/production.rb",
148
- :gemfile => "#{File.dirname(__FILE__)}/../generators/instance/templates/instance_gemfile"
174
+ :production => "#{File.dirname(__FILE__)}/../../config/environments/production.rb"
149
175
  }
150
176
  backups = {
151
177
  :env => "#{RAILS_ROOT}/config/environment.bak",
152
178
  :development => "#{RAILS_ROOT}/config/environments/development.bak",
153
179
  :test => "#{RAILS_ROOT}/config/environments/test.bak",
154
180
  :cucumber => "#{RAILS_ROOT}/config/environments/cucumber.bak",
155
- :production => "#{RAILS_ROOT}/config/environments/production.bak",
156
- :gemfile => "#{RAILS_ROOT}/Gemfile.bak"
181
+ :production => "#{RAILS_ROOT}/config/environments/production.bak"
157
182
  }
158
183
 
159
184
  FileUtils.cp("#{File.dirname(__FILE__)}/../generators/instance/templates/instance_boot.rb", RAILS_ROOT + '/config/boot.rb')
160
185
  FileUtils.cp("#{File.dirname(__FILE__)}/../../config/preinitializer.rb", RAILS_ROOT + '/config/preinitializer.rb')
161
186
  warning = ""
162
- [:env, :development, :test, :cucumber, :production, :gemfile].each do |env_file|
187
+ [:env, :development, :test, :cucumber, :production].each do |env_file|
163
188
  File.open(tmps[env_file], 'w') do |f|
164
189
  app_name = File.basename(File.expand_path(RAILS_ROOT))
165
190
  radiant_version = Radiant::Version.to_s
166
- sqlite_version = if Gem.loaded_specs['sqlite3']
167
- Gem.loaded_specs['sqlite3'].version.to_s
168
- else
169
- '1.3.3'
170
- end
171
191
  f.write ERB.new(File.read(gens[env_file])).result(binding)
172
192
  end
173
- next if File.exist?(instances[env_file]) && FileUtils.compare_file(instances[env_file], tmps[env_file])
174
- FileUtils.cp(instances[env_file], backups[env_file]) if File.exist?(instances[env_file])
175
- FileUtils.cp(tmps[env_file], instances[env_file])
176
- FileUtils.rm(tmps[env_file])
177
- warning << "
193
+ unless File.exist?(instances[env_file]) && FileUtils.compare_file(instances[env_file], tmps[env_file])
194
+ FileUtils.cp(instances[env_file], backups[env_file]) if File.exist?(instances[env_file])
195
+ FileUtils.cp(tmps[env_file], instances[env_file])
196
+ warning << "
178
197
  - #{instances[env_file].sub(/^#{RAILS_ROOT}/, '')}"
198
+ end
199
+ FileUtils.rm(tmps[env_file])
179
200
  end
180
201
  unless warning.blank?
181
202
  puts "** WARNING **