trusty-cms 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +23 -0
  3. data/CHANGELOG.md +754 -0
  4. data/CONTRIBUTORS.md +263 -0
  5. data/Gemfile +40 -0
  6. data/Gemfile.lock +177 -0
  7. data/INSTALL.md +10 -0
  8. data/LICENSE.md +21 -0
  9. data/README.md +85 -0
  10. data/Rakefile +7 -0
  11. data/app/controllers/admin/configuration_controller.rb +50 -0
  12. data/app/controllers/admin/extensions_controller.rb +11 -0
  13. data/app/controllers/admin/layouts_controller.rb +8 -0
  14. data/app/controllers/admin/page_fields_controller.rb +9 -0
  15. data/app/controllers/admin/page_parts_controller.rb +9 -0
  16. data/app/controllers/admin/pages_controller.rb +89 -0
  17. data/app/controllers/admin/preferences_controller.rb +46 -0
  18. data/app/controllers/admin/references_controller.rb +7 -0
  19. data/app/controllers/admin/resource_controller.rb +245 -0
  20. data/app/controllers/admin/users_controller.rb +40 -0
  21. data/app/controllers/admin/welcome_controller.rb +48 -0
  22. data/app/controllers/application_controller.rb +114 -0
  23. data/app/controllers/site_controller.rb +97 -0
  24. data/app/helpers/admin/configuration_helper.rb +80 -0
  25. data/app/helpers/admin/export_helper.rb +2 -0
  26. data/app/helpers/admin/extensions_helper.rb +2 -0
  27. data/app/helpers/admin/layouts_helper.rb +21 -0
  28. data/app/helpers/admin/node_helper.rb +96 -0
  29. data/app/helpers/admin/pages_helper.rb +117 -0
  30. data/app/helpers/admin/preferences_helper.rb +3 -0
  31. data/app/helpers/admin/references_helper.rb +46 -0
  32. data/app/helpers/admin/regions_helper.rb +28 -0
  33. data/app/helpers/admin/resource_helper.rb +2 -0
  34. data/app/helpers/admin/users_helper.rb +8 -0
  35. data/app/helpers/admin/welcome_helper.rb +2 -0
  36. data/app/helpers/application_helper.rb +241 -0
  37. data/app/helpers/site_helper.rb +2 -0
  38. data/app/models/deprecated_tags.rb +42 -0
  39. data/app/models/file_not_found_page.rb +32 -0
  40. data/app/models/layout.rb +15 -0
  41. data/app/models/menu_renderer.rb +140 -0
  42. data/app/models/page.rb +377 -0
  43. data/app/models/page_context.rb +53 -0
  44. data/app/models/page_field.rb +3 -0
  45. data/app/models/page_part.rb +20 -0
  46. data/app/models/standard_tags.rb +1318 -0
  47. data/app/models/status.rb +41 -0
  48. data/app/models/text_filter.rb +36 -0
  49. data/app/models/trusty_cms/config.rb +313 -0
  50. data/app/models/trusty_cms/page_response_cache_director.rb +43 -0
  51. data/app/models/user.rb +96 -0
  52. data/app/models/user_action_observer.rb +25 -0
  53. data/app/views/admin/configuration/edit.html.haml +38 -0
  54. data/app/views/admin/configuration/show.html.haml +58 -0
  55. data/app/views/admin/extensions/index.html.haml +41 -0
  56. data/app/views/admin/layouts/_form.html.haml +39 -0
  57. data/app/views/admin/layouts/edit.html.haml +9 -0
  58. data/app/views/admin/layouts/index.html.haml +35 -0
  59. data/app/views/admin/layouts/new.html.haml +7 -0
  60. data/app/views/admin/layouts/remove.html.haml +16 -0
  61. data/app/views/admin/page_fields/_page_field.html.haml +12 -0
  62. data/app/views/admin/page_parts/_page_part.html.haml +18 -0
  63. data/app/views/admin/pages/_fields.html.haml +71 -0
  64. data/app/views/admin/pages/_meta_row.html.haml +8 -0
  65. data/app/views/admin/pages/_node.html.haml +26 -0
  66. data/app/views/admin/pages/_popups.html.haml +27 -0
  67. data/app/views/admin/pages/children.html.haml +2 -0
  68. data/app/views/admin/pages/edit.html.haml +12 -0
  69. data/app/views/admin/pages/index.html.haml +26 -0
  70. data/app/views/admin/pages/new.html.haml +10 -0
  71. data/app/views/admin/pages/remove.html.haml +18 -0
  72. data/app/views/admin/preferences/edit.html.haml +44 -0
  73. data/app/views/admin/references/_tag_reference.haml +3 -0
  74. data/app/views/admin/references/filters.haml +6 -0
  75. data/app/views/admin/references/tags.haml +30 -0
  76. data/app/views/admin/users/_avatar.html.haml +5 -0
  77. data/app/views/admin/users/_form.html.haml +53 -0
  78. data/app/views/admin/users/_password_fields.html.haml +18 -0
  79. data/app/views/admin/users/edit.html.haml +9 -0
  80. data/app/views/admin/users/index.html.haml +39 -0
  81. data/app/views/admin/users/new.html.haml +6 -0
  82. data/app/views/admin/users/remove.html.haml +16 -0
  83. data/app/views/admin/welcome/login.html.haml +23 -0
  84. data/app/views/layouts/application.html.haml +50 -0
  85. data/app/views/site/not_found.html.haml +3 -0
  86. data/bin/ci/before_script +15 -0
  87. data/bin/trusty_cms +53 -0
  88. data/config/application.rb +124 -0
  89. data/config/boot.rb +9 -0
  90. data/config/compass.config +15 -0
  91. data/config/database.db2.yml +20 -0
  92. data/config/database.mysql.yml +25 -0
  93. data/config/database.postgresql.yml +25 -0
  94. data/config/database.sqlite.yml +16 -0
  95. data/config/database.sqlserver.yml +20 -0
  96. data/config/environment.rb +5 -0
  97. data/config/environments/development.rb +19 -0
  98. data/config/environments/production.rb +27 -0
  99. data/config/environments/test.rb +35 -0
  100. data/config/initializers/active_record_extensions.rb +1 -0
  101. data/config/initializers/configuration_extensions.rb +0 -0
  102. data/config/initializers/haml.rb +2 -0
  103. data/config/initializers/object_extensions.rb +1 -0
  104. data/config/initializers/radiant_config.rb +16 -0
  105. data/config/initializers/rails_patch.rb +2 -0
  106. data/config/initializers/response_cache_timeout.rb +3 -0
  107. data/config/initializers/string_extensions.rb +1 -0
  108. data/config/initializers/symbol_extensions.rb +1 -0
  109. data/config/initializers/tmp.rb +2 -0
  110. data/config/locales/en.yml +230 -0
  111. data/config/locales/en_available_tags.yml +625 -0
  112. data/config/preinitializer.rb +18 -0
  113. data/config/routes.rb +30 -0
  114. data/db/migrate/001_create_radiant_tables.rb +75 -0
  115. data/db/migrate/002_insert_initial_data.rb +12 -0
  116. data/db/migrate/003_rename_behavior_column.rb +9 -0
  117. data/db/migrate/004_rename_filter_column.rb +11 -0
  118. data/db/migrate/005_add_virtual_column_to_page.rb +9 -0
  119. data/db/migrate/006_integer_columns_to_boolean.rb +36 -0
  120. data/db/migrate/007_remove_virtual_column_from_page.rb +9 -0
  121. data/db/migrate/008_add_virtual_column_to_page_again.rb +9 -0
  122. data/db/migrate/009_add_content_type_field_to_layout.rb +9 -0
  123. data/db/migrate/010_merge_behaviors_and_pages.rb +57 -0
  124. data/db/migrate/011_rename_type_column_on_page_to_class_name.rb +9 -0
  125. data/db/migrate/012_create_extension_meta.rb +13 -0
  126. data/db/migrate/013_add_notes_field_to_user.rb +9 -0
  127. data/db/migrate/014_rename_config_default_parts_key.rb +17 -0
  128. data/db/migrate/015_add_optimistic_locking.rb +15 -0
  129. data/db/migrate/016_add_sessions.rb +16 -0
  130. data/db/migrate/017_rename_created_by_updated_by_columns.rb +15 -0
  131. data/db/migrate/018_add_description_and_keywords_to_pages.rb +11 -0
  132. data/db/migrate/019_add_salt_to_users.rb +11 -0
  133. data/db/migrate/020_add_session_info_to_users.rb +11 -0
  134. data/db/migrate/021_remove_session_expire_from_users.rb +9 -0
  135. data/db/migrate/20081203140407_add_indexes.rb +19 -0
  136. data/db/migrate/20090226140109_add_user_language.rb +9 -0
  137. data/db/migrate/20090929164633_rename_developer_role_to_designer.rb +9 -0
  138. data/db/migrate/20091003095744_change_user_language_to_locale.rb +9 -0
  139. data/db/migrate/20100805154952_add_page_fields.rb +15 -0
  140. data/db/migrate/20100805155020_convert_page_metas.rb +24 -0
  141. data/db/migrate/20100810151922_add_field_name_index.rb +11 -0
  142. data/db/migrate/20110902203823_add_allowed_children_cache_to_pages.rb +13 -0
  143. data/db/migrate/20111016150725_extend_page_part_content_limit.rb +15 -0
  144. data/db/migrate/20120209231801_change_pages_allowed_children_cache_to_text.rb +11 -0
  145. data/db/schema.rb +128 -0
  146. data/lib/active_record_extensions/active_record_extensions.rb +27 -0
  147. data/lib/annotatable.rb +68 -0
  148. data/lib/configuration_extensions/configuration_extensions.rb +357 -0
  149. data/lib/generators/extension/USAGE +30 -0
  150. data/lib/generators/extension/extension_generator.rb +97 -0
  151. data/lib/generators/extension/templates/README.md +6 -0
  152. data/lib/generators/extension/templates/RSpecRakefile +109 -0
  153. data/lib/generators/extension/templates/Rakefile +25 -0
  154. data/lib/generators/extension/templates/cucumber.yml +1 -0
  155. data/lib/generators/extension/templates/cucumber_env.rb +11 -0
  156. data/lib/generators/extension/templates/cucumber_paths.rb +22 -0
  157. data/lib/generators/extension/templates/en.yml +3 -0
  158. data/lib/generators/extension/templates/extension.rb +21 -0
  159. data/lib/generators/extension/templates/functional_test.rb +15 -0
  160. data/lib/generators/extension/templates/gemspec.rb +29 -0
  161. data/lib/generators/extension/templates/lib.rb +8 -0
  162. data/lib/generators/extension/templates/migration.rb +9 -0
  163. data/lib/generators/extension/templates/radiant_config.rb +3 -0
  164. data/lib/generators/extension/templates/routes.rb +5 -0
  165. data/lib/generators/extension/templates/spec.opts +6 -0
  166. data/lib/generators/extension/templates/spec_helper.rb +42 -0
  167. data/lib/generators/extension/templates/tasks.rake +47 -0
  168. data/lib/generators/extension/templates/test_helper.rb +26 -0
  169. data/lib/generators/extension_controller/USAGE +36 -0
  170. data/lib/generators/extension_controller/extension_controller_generator.rb +84 -0
  171. data/lib/generators/extension_controller/templates/controller.rb +10 -0
  172. data/lib/generators/extension_controller/templates/controller_spec.rb +23 -0
  173. data/lib/generators/extension_controller/templates/functional_test.rb +11 -0
  174. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  175. data/lib/generators/extension_controller/templates/helper_spec.rb +11 -0
  176. data/lib/generators/extension_controller/templates/helper_test.rb +4 -0
  177. data/lib/generators/extension_controller/templates/view.html.erb +2 -0
  178. data/lib/generators/extension_controller/templates/view_spec.rb +12 -0
  179. data/lib/generators/extension_mailer/USAGE +17 -0
  180. data/lib/generators/extension_mailer/extension_mailer_generator.rb +68 -0
  181. data/lib/generators/extension_mailer/templates/fixture.erb +3 -0
  182. data/lib/generators/extension_mailer/templates/mailer.rb +15 -0
  183. data/lib/generators/extension_mailer/templates/unit_test.rb +21 -0
  184. data/lib/generators/extension_mailer/templates/view.erb +3 -0
  185. data/lib/generators/extension_migration/USAGE +34 -0
  186. data/lib/generators/extension_migration/extension_migration_generator.rb +25 -0
  187. data/lib/generators/extension_migration/templates/migration.rb +11 -0
  188. data/lib/generators/extension_model/USAGE +35 -0
  189. data/lib/generators/extension_model/extension_model_generator.rb +68 -0
  190. data/lib/generators/extension_model/templates/fixtures.yml +19 -0
  191. data/lib/generators/extension_model/templates/migration.rb +16 -0
  192. data/lib/generators/extension_model/templates/model.rb +2 -0
  193. data/lib/generators/extension_model/templates/model_spec.rb +11 -0
  194. data/lib/generators/extension_model/templates/unit_test.rb +8 -0
  195. data/lib/generators/generator_base_extension.rb +16 -0
  196. data/lib/generators/instance/instance_generator.rb +148 -0
  197. data/lib/generators/instance/templates/databases/db2.yml +40 -0
  198. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  199. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  200. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  201. data/lib/generators/instance/templates/databases/sqlserver.yml +21 -0
  202. data/lib/generators/instance/templates/instance_boot.rb +122 -0
  203. data/lib/generators/instance/templates/instance_config.ru +2 -0
  204. data/lib/generators/instance/templates/instance_environment.rb +83 -0
  205. data/lib/generators/instance/templates/instance_gemfile +81 -0
  206. data/lib/generators/instance/templates/instance_generate +6 -0
  207. data/lib/generators/instance/templates/instance_radiant_config.rb +16 -0
  208. data/lib/generators/instance/templates/instance_rakefile +3 -0
  209. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  210. data/lib/generators/language_extension/USAGE +27 -0
  211. data/lib/generators/language_extension/language_extension_generator.rb +71 -0
  212. data/lib/generators/language_extension/templates/README +3 -0
  213. data/lib/generators/language_extension/templates/RSpecRakefile +123 -0
  214. data/lib/generators/language_extension/templates/Rakefile +25 -0
  215. data/lib/generators/language_extension/templates/available_tags.yml +553 -0
  216. data/lib/generators/language_extension/templates/cucumber.yml +1 -0
  217. data/lib/generators/language_extension/templates/cucumber_env.rb +16 -0
  218. data/lib/generators/language_extension/templates/cucumber_paths.rb +14 -0
  219. data/lib/generators/language_extension/templates/extension.rb +12 -0
  220. data/lib/generators/language_extension/templates/functional_test.rb +15 -0
  221. data/lib/generators/language_extension/templates/gemspec.rb +24 -0
  222. data/lib/generators/language_extension/templates/lang.yml +181 -0
  223. data/lib/generators/language_extension/templates/lib.rb +8 -0
  224. data/lib/generators/language_extension/templates/spec.opts +6 -0
  225. data/lib/generators/language_extension/templates/spec_helper.rb +36 -0
  226. data/lib/generators/language_extension/templates/tasks.rake +28 -0
  227. data/lib/generators/language_extension/templates/test_helper.rb +26 -0
  228. data/lib/inheritable_class_attributes.rb +65 -0
  229. data/lib/local_time.rb +6 -0
  230. data/lib/login_system.rb +132 -0
  231. data/lib/method_observer.rb +50 -0
  232. data/lib/object_extensions/object_extensions.rb +5 -0
  233. data/lib/simpleton.rb +21 -0
  234. data/lib/string_extensions/string_extensions.rb +25 -0
  235. data/lib/symbol_extensions/symbol_extensions.rb +5 -0
  236. data/lib/tasks/database.rake +85 -0
  237. data/lib/tasks/environments.rake +11 -0
  238. data/lib/tasks/extensions.rake +85 -0
  239. data/lib/tasks/framework.rake +255 -0
  240. data/lib/tasks/instance.rake +23 -0
  241. data/lib/tasks/prototype.rake +31 -0
  242. data/lib/tasks/radiant_config.rake +18 -0
  243. data/lib/tasks/release.rake +131 -0
  244. data/lib/tasks/translate.rake +59 -0
  245. data/lib/tasks/undefine.rake +28 -0
  246. data/lib/translation_support.rb +54 -0
  247. data/lib/trusty_cms/admin_ui/region_partials.rb +23 -0
  248. data/lib/trusty_cms/admin_ui/region_set.rb +35 -0
  249. data/lib/trusty_cms/admin_ui.rb +244 -0
  250. data/lib/trusty_cms/available_locales.rb +19 -0
  251. data/lib/trusty_cms/cache.rb +100 -0
  252. data/lib/trusty_cms/config/definition.rb +142 -0
  253. data/lib/trusty_cms/engine.rb +10 -0
  254. data/lib/trusty_cms/extension/script.rb +395 -0
  255. data/lib/trusty_cms/extension.rb +146 -0
  256. data/lib/trusty_cms/extension_loader.rb +130 -0
  257. data/lib/trusty_cms/extension_migrator.rb +98 -0
  258. data/lib/trusty_cms/extension_path.rb +200 -0
  259. data/lib/trusty_cms/initializer.rb +162 -0
  260. data/lib/trusty_cms/pagination/controller.rb +41 -0
  261. data/lib/trusty_cms/pagination/link_renderer.rb +34 -0
  262. data/lib/trusty_cms/resource_responses.rb +121 -0
  263. data/lib/trusty_cms/setup.rb +227 -0
  264. data/lib/trusty_cms/taggable.rb +138 -0
  265. data/lib/trusty_cms/task_support.rb +66 -0
  266. data/lib/trusty_cms.rb +19 -0
  267. data/log/.keep +0 -0
  268. data/public/.htaccess +40 -0
  269. data/public/404.html +8 -0
  270. data/public/500.html +8 -0
  271. data/public/dispatch.cgi +10 -0
  272. data/public/dispatch.fcgi +24 -0
  273. data/public/dispatch.rb +10 -0
  274. data/public/favicon.ico +0 -0
  275. data/public/images/admin/add_tab.png +0 -0
  276. data/public/images/admin/avatar_32x32.png +0 -0
  277. data/public/images/admin/avatar_64x64.png +0 -0
  278. data/public/images/admin/avatar_96x96.png +0 -0
  279. data/public/images/admin/brown_bottom_line.gif +0 -0
  280. data/public/images/admin/calendar_down.gif +0 -0
  281. data/public/images/admin/collapse.png +0 -0
  282. data/public/images/admin/draft_page.png +0 -0
  283. data/public/images/admin/expand.png +0 -0
  284. data/public/images/admin/image.png +0 -0
  285. data/public/images/admin/javascript.png +0 -0
  286. data/public/images/admin/layout.png +0 -0
  287. data/public/images/admin/metadata_toggle.png +0 -0
  288. data/public/images/admin/minus.png +0 -0
  289. data/public/images/admin/minus_disabled.png +0 -0
  290. data/public/images/admin/minus_grey.png +0 -0
  291. data/public/images/admin/navigation_secondary_separator.gif +0 -0
  292. data/public/images/admin/page.png +0 -0
  293. data/public/images/admin/plus.png +0 -0
  294. data/public/images/admin/plus_disabled.png +0 -0
  295. data/public/images/admin/plus_grey.png +0 -0
  296. data/public/images/admin/popup_border_background.png +0 -0
  297. data/public/images/admin/popup_border_bottom_left.png +0 -0
  298. data/public/images/admin/popup_border_bottom_right.png +0 -0
  299. data/public/images/admin/popup_border_top_left.png +0 -0
  300. data/public/images/admin/popup_border_top_right.png +0 -0
  301. data/public/images/admin/search.png +0 -0
  302. data/public/images/admin/single_form_shadow.png +0 -0
  303. data/public/images/admin/snippet.png +0 -0
  304. data/public/images/admin/spinner.gif +0 -0
  305. data/public/images/admin/status_background.png +0 -0
  306. data/public/images/admin/status_bottom_left.png +0 -0
  307. data/public/images/admin/status_bottom_right.png +0 -0
  308. data/public/images/admin/status_spinner.gif +0 -0
  309. data/public/images/admin/status_top_left.png +0 -0
  310. data/public/images/admin/status_top_right.png +0 -0
  311. data/public/images/admin/stylesheet.png +0 -0
  312. data/public/images/admin/tab_close.png +0 -0
  313. data/public/images/admin/upload.png +0 -0
  314. data/public/images/admin/virtual_page.png +0 -0
  315. data/public/images/radiant/radiant-badge-color.png +0 -0
  316. data/public/javascripts/admin/application.js +94 -0
  317. data/public/javascripts/admin/codearea.js +165 -0
  318. data/public/javascripts/admin/controls.js +965 -0
  319. data/public/javascripts/admin/cookie.js +80 -0
  320. data/public/javascripts/admin/dateinput.js +402 -0
  321. data/public/javascripts/admin/dragdrop.js +974 -0
  322. data/public/javascripts/admin/dropdown.js +216 -0
  323. data/public/javascripts/admin/effects.js +1122 -0
  324. data/public/javascripts/admin/lowpro.js +340 -0
  325. data/public/javascripts/admin/overrides.js +1 -0
  326. data/public/javascripts/admin/page_preview.js +41 -0
  327. data/public/javascripts/admin/pagefield.js +54 -0
  328. data/public/javascripts/admin/pagestatus.js +17 -0
  329. data/public/javascripts/admin/popup.js +339 -0
  330. data/public/javascripts/admin/prototype.js +4874 -0
  331. data/public/javascripts/admin/ruledtable.js +13 -0
  332. data/public/javascripts/admin/shortcuts.js +33 -0
  333. data/public/javascripts/admin/sitemap.js +149 -0
  334. data/public/javascripts/admin/status.js +233 -0
  335. data/public/javascripts/admin/tabcontrol.js +123 -0
  336. data/public/javascripts/admin/toggle.js +430 -0
  337. data/public/javascripts/admin/utility.js +53 -0
  338. data/public/javascripts/admin/validationerror.js +18 -0
  339. data/public/loading-iframe.html +11 -0
  340. data/public/robots.txt +1 -0
  341. data/public/stylesheets/sass/admin/_base.sass +18 -0
  342. data/public/stylesheets/sass/admin/main.sass +27 -0
  343. data/public/stylesheets/sass/admin/modules/_boxes.sass +6 -0
  344. data/public/stylesheets/sass/admin/modules/_gradients.sass +4 -0
  345. data/public/stylesheets/sass/admin/modules/_links.sass +18 -0
  346. data/public/stylesheets/sass/admin/overrides.sass +2 -0
  347. data/public/stylesheets/sass/admin/partials/_actions.sass +96 -0
  348. data/public/stylesheets/sass/admin/partials/_avatars.sass +10 -0
  349. data/public/stylesheets/sass/admin/partials/_content.sass +58 -0
  350. data/public/stylesheets/sass/admin/partials/_dateinput.sass +62 -0
  351. data/public/stylesheets/sass/admin/partials/_deprecated.sass +55 -0
  352. data/public/stylesheets/sass/admin/partials/_dropdown.sass +28 -0
  353. data/public/stylesheets/sass/admin/partials/_footer.sass +12 -0
  354. data/public/stylesheets/sass/admin/partials/_forms.sass +322 -0
  355. data/public/stylesheets/sass/admin/partials/_header.sass +114 -0
  356. data/public/stylesheets/sass/admin/partials/_index.sass +147 -0
  357. data/public/stylesheets/sass/admin/partials/_layout.sass +10 -0
  358. data/public/stylesheets/sass/admin/partials/_messages.sass +10 -0
  359. data/public/stylesheets/sass/admin/partials/_popup.sass +213 -0
  360. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +72 -0
  361. data/public/stylesheets/sass/admin/partials/_toolbar.sass +31 -0
  362. data/public/stylesheets/sass/admin/partials/_typography.sass +60 -0
  363. data/public/stylesheets/sass/admin/partials/_validations.sass +19 -0
  364. data/rails/init.rb +1 -0
  365. data/script/about +4 -0
  366. data/script/breakpointer +3 -0
  367. data/script/console +3 -0
  368. data/script/dbconsole +3 -0
  369. data/script/destroy +3 -0
  370. data/script/extension +5 -0
  371. data/script/generate +3 -0
  372. data/script/performance/benchmarker +3 -0
  373. data/script/performance/profiler +3 -0
  374. data/script/performance/request +3 -0
  375. data/script/plugin +3 -0
  376. data/script/process/inspector +3 -0
  377. data/script/process/reaper +3 -0
  378. data/script/process/spawner +3 -0
  379. data/script/process/spinner +3 -0
  380. data/script/rails +6 -0
  381. data/script/runner +3 -0
  382. data/script/server +3 -0
  383. data/script/version +5 -0
  384. data/spec/ci/database.mysql.yml +4 -0
  385. data/spec/ci/database.postgresql.yml +4 -0
  386. data/spec/ci/database.sqlite.yml +3 -0
  387. data/trusty_cms.gemspec +50 -0
  388. metadata +781 -0
@@ -0,0 +1,121 @@
1
+ require 'ostruct'
2
+ module TrustyCms
3
+ module ResourceResponses
4
+ def self.extended(base)
5
+ base.send :class_attribute, :responses
6
+ base.send :include, InstanceMethods
7
+ end
8
+
9
+ def responses
10
+ r = (self.responses = read_inheritable_attribute(:responses) || Collector.new)
11
+ yield r if block_given?
12
+ r
13
+ end
14
+
15
+ module InstanceMethods
16
+ def response_for(action)
17
+ responses = self.class.responses.send(action)
18
+ respond_to do |wants|
19
+ responses.each_format do |f, format_block|
20
+ if format_block
21
+ wants.send(f, &wrap(format_block))
22
+ else
23
+ wants.send(f)
24
+ end
25
+ end
26
+ responses.each_published do |pub, pub_block|
27
+ wants.send(pub, &wrap(pub_block))
28
+ end
29
+ if responses.default
30
+ wants.any(&wrap(responses.default))
31
+ else
32
+ wants.any
33
+ end
34
+ end
35
+ end
36
+
37
+ def wrap(proc)
38
+ # Makes sure our response blocks get evaluated in the right context
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
+
46
+ instance_eval(&proc)
47
+ end
48
+ end
49
+ end
50
+
51
+ class Collector < OpenStruct
52
+ def initialize
53
+ super
54
+ @table = Hash.new {|h,k| h[k] = Response.new }
55
+ end
56
+
57
+ def initialize_copy(orig)
58
+ super
59
+ @table.keys.each do |key|
60
+ @table[key] = orig.send(key).dup
61
+ end
62
+ end
63
+ end
64
+
65
+ class Response
66
+ attr_reader :publish_formats, :publish_block, :blocks, :block_order
67
+ def initialize
68
+ @publish_formats = []
69
+ @blocks = {}
70
+ @block_order = []
71
+ end
72
+
73
+ def initialize_copy(orig)
74
+ @publish_formats = orig.publish_formats.dup
75
+ @blocks = orig.blocks.dup
76
+ @block_order = orig.block_order.dup
77
+ @publish_block = orig.publish_block.dup if orig.publish_block
78
+ @default = orig.default.dup if orig.default
79
+ end
80
+
81
+ def default(&block)
82
+ if block_given?
83
+ @default = block
84
+ end
85
+ @default
86
+ end
87
+
88
+ def publish(*formats, &block)
89
+ @publish_formats.concat(formats)
90
+ if block_given?
91
+ @publish_block = block
92
+ else
93
+ raise ArgumentError, "Block required to publish" unless @publish_block
94
+ end
95
+ end
96
+
97
+ def each_published
98
+ publish_formats.each do |format|
99
+ yield format, publish_block if block_given?
100
+ end
101
+ end
102
+
103
+ def each_format
104
+ @block_order.each do |format|
105
+ yield format, @blocks[format] if block_given?
106
+ end
107
+ end
108
+
109
+ def method_missing(method, *args, &block)
110
+ if block_given?
111
+ @blocks[method] = block
112
+ @block_order << method unless @block_order.include?(method)
113
+ elsif args.empty?
114
+ @block_order << method
115
+ else
116
+ super
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,227 @@
1
+ require "highline"
2
+ require "forwardable"
3
+
4
+ module TrustyCms
5
+ class Setup
6
+
7
+ class << self
8
+ def bootstrap(config)
9
+ setup = new
10
+ setup.bootstrap(config)
11
+ setup
12
+ end
13
+ end
14
+
15
+ attr_accessor :config
16
+
17
+ def bootstrap(config)
18
+ @config = config
19
+ @admin = create_admin_user(config[:admin_name], config[:admin_username], config[:admin_password])
20
+ UserActionObserver.current_user = @admin
21
+ load_default_configuration
22
+ load_database_template(config[:database_template])
23
+ announce "Finished."
24
+ end
25
+
26
+ def create_admin_user(name, username, password)
27
+ unless name and username and password
28
+ announce "Create the admin user (press enter for defaults)."
29
+ name = prompt_for_admin_name unless name
30
+ username = prompt_for_admin_username unless username
31
+ password = prompt_for_admin_password unless password
32
+ end
33
+ attributes = {
34
+ :name => name,
35
+ :login => username,
36
+ :password => password,
37
+ :password_confirmation => password,
38
+ :admin => true
39
+ }
40
+ admin = User.find_by_login(username)
41
+ admin = User.new unless admin
42
+ admin.update_attributes(attributes)
43
+ admin
44
+ end
45
+
46
+ def load_default_configuration
47
+ feedback "\nInitializing configuration" do
48
+ step { TrustyCms::Config['admin.title' ] = 'TrustyCms CMS' }
49
+ step { TrustyCms::Config['admin.subtitle'] = 'Publishing for Small Teams' }
50
+ step { TrustyCms::Config['defaults.page.parts' ] = 'body, extended' }
51
+ step { TrustyCms::Config['defaults.page.status' ] = 'Draft' }
52
+ step { TrustyCms::Config['defaults.page.filter' ] = nil }
53
+ step { TrustyCms::Config['defaults.page.fields'] = 'Keywords, Description' }
54
+ step { TrustyCms::Config['session_timeout'] = 2.weeks }
55
+ step { TrustyCms::Config['default_locale'] = 'en' }
56
+ end
57
+ end
58
+
59
+ def load_database_template(filename)
60
+ template = nil
61
+ if filename
62
+ name = find_template_in_path(filename)
63
+ unless name
64
+ announce "Invalid template name: #{filename}"
65
+ filename = nil
66
+ else
67
+ template = load_template_file(name)
68
+ end
69
+ end
70
+ unless filename
71
+ templates = find_and_load_templates("#{TRUSTY_CMS_ROOT}/db/templates/*.yml")
72
+ templates.concat find_and_load_templates("#{TRUSTY_CMS_ROOT}/vendor/extensions/**/db/templates/*.yml")
73
+ TrustyCms::Extension.descendants.each do |d|
74
+ templates.concat find_and_load_templates(d.root + '/db/templates/*.yml')
75
+ end
76
+ templates.concat find_and_load_templates("#{Rails.root}/vendor/extensions/**/db/templates/*.yml")
77
+ templates.concat find_and_load_templates("#{Rails.root}/db/templates/*.yml")
78
+ templates.uniq!
79
+ choose do |menu|
80
+ menu.header = "\nSelect a database template"
81
+ menu.prompt = "[1-#{templates.size}]: "
82
+ menu.select_by = :index
83
+ templates.each { |t| menu.choice(t['name']) { template = t } }
84
+ end
85
+ end
86
+ create_records(template)
87
+ end
88
+
89
+ private
90
+
91
+ def prompt_for_admin_name
92
+ username = ask('Name (Administrator): ', String) do |q|
93
+ q.validate = /^.{0,100}$/
94
+ q.responses[:not_valid] = "Invalid name. Must be at less than 100 characters long."
95
+ q.whitespace = :strip
96
+ end
97
+ username = "Administrator" if username.blank?
98
+ username
99
+ end
100
+
101
+ def prompt_for_admin_username
102
+ username = ask('Username (admin): ', String) do |q|
103
+ q.validate = /^(|.{3,40})$/
104
+ q.responses[:not_valid] = "Invalid username. Must be at least 3 characters long."
105
+ q.whitespace = :strip
106
+ end
107
+ username = "admin" if username.blank?
108
+ username
109
+ end
110
+
111
+ def prompt_for_admin_password
112
+ password = ask('Password (radiant): ', String) do |q|
113
+ q.echo = false unless defined?(::JRuby) # JRuby doesn't support stty interaction
114
+ q.validate = /^(|.{5,40})$/
115
+ q.responses[:not_valid] = "Invalid password. Must be at least 5 characters long."
116
+ q.whitespace = :strip
117
+ end
118
+ password = "radiant" if password.blank?
119
+ password
120
+ end
121
+
122
+ def find_template_in_path(filename)
123
+ (
124
+ [
125
+ filename,
126
+ "#{TRUSTY_CMS_ROOT}/#{filename}",
127
+ "#{TRUSTY_CMS_ROOT}/db/templates/#{filename}",
128
+ "#{Rails.root}/#{filename}",
129
+ "#{Rails.root}/db/templates/#{filename}",
130
+ "#{Dir.pwd}/#{filename}",
131
+ "#{Dir.pwd}/db/templates/#{filename}"
132
+ ] +
133
+ Dir.glob("#{TRUSTY_CMS_ROOT}/vendor/extensions/**/db/templates/#{filename}") +
134
+ Dir.glob("#{Rails.root}/vendor/extensions/**/db/templates/#{filename}") +
135
+ TrustyCms::Extension.descendants.inject([]) do |r, d|
136
+ r << "#{d.root}/db/templates/#{filename}"
137
+ end
138
+ ).find { |name| File.file?(name) }
139
+ end
140
+
141
+ def find_and_load_templates(glob)
142
+ templates = Dir[glob]
143
+ templates.map! { |template| load_template_file(template) }
144
+ templates.sort_by { |template| template['name'] }
145
+ end
146
+
147
+ def load_template_file(filename)
148
+ YAML.load_file(filename)
149
+ end
150
+
151
+ def create_records(template)
152
+ records = template['records']
153
+ if records
154
+ puts
155
+ records.keys.each do |key|
156
+ feedback "Creating #{key.to_s.underscore.humanize}" do
157
+ model = model(key)
158
+ model.reset_column_information
159
+ record_pairs = order_by_id(records[key])
160
+ step do
161
+ record_pairs.each do |id, record|
162
+ model.new(record).save
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end
169
+
170
+ def model(model_name)
171
+ model_name.to_s.singularize.constantize
172
+ end
173
+
174
+ def order_by_id(records)
175
+ records.map { |name, record| [record['id'], record] }.sort { |a, b| a[0] <=> b[0] }
176
+ end
177
+
178
+ extend Forwardable
179
+ def_delegators :terminal, :agree, :ask, :choose, :say
180
+
181
+ def terminal
182
+ @terminal ||= HighLine.new
183
+ end
184
+
185
+ def output
186
+ terminal.instance_variable_get("@output")
187
+ end
188
+
189
+ def wrap(string)
190
+ string = terminal.send(:wrap, string) unless terminal.wrap_at.nil?
191
+ string
192
+ end
193
+
194
+ def print(string)
195
+ output.print(wrap(string))
196
+ output.flush
197
+ end
198
+
199
+ def puts(string = "\n")
200
+ say string
201
+ end
202
+
203
+ def announce(string)
204
+ puts "\n#{string}"
205
+ end
206
+
207
+ def feedback(process, &block)
208
+ print "#{process}..."
209
+ if yield
210
+ puts "OK"
211
+ true
212
+ else
213
+ puts "FAILED"
214
+ false
215
+ end
216
+ rescue Exception => e
217
+ puts "FAILED"
218
+ raise e
219
+ end
220
+
221
+ def step
222
+ yield if block_given?
223
+ print '.'
224
+ end
225
+
226
+ end
227
+ end
@@ -0,0 +1,138 @@
1
+ module TrustyCms::Taggable
2
+ mattr_accessor :last_description, :tag_descriptions, :tag_deprecations
3
+ @@tag_descriptions = {}
4
+ @@tag_deprecations = {}
5
+
6
+ def self.included(base)
7
+ base.extend(ClassMethods)
8
+ base.module_eval do
9
+ def self.included(new_base)
10
+ super
11
+ new_base.class_eval do
12
+ include Rails.application.routes.url_helpers
13
+ end
14
+ class << new_base
15
+ def default_url_options
16
+ {:controller => "site", :action => "show_page", :only_path => true}
17
+ end
18
+ end
19
+ new_base.tag_descriptions.merge! self.tag_descriptions
20
+ end
21
+
22
+ protected
23
+ def params
24
+ @params ||= request.parameters unless request.nil?
25
+ end
26
+
27
+ def request_uri
28
+ @request_url ||= request.request_uri unless request.nil?
29
+ end
30
+ end
31
+ end
32
+
33
+ def render_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
41
+ end
42
+
43
+ def tags
44
+ Util.tags_in_array(methods)
45
+ end
46
+
47
+ def tag_descriptions(hash=nil)
48
+ self.class.tag_descriptions hash
49
+ end
50
+
51
+ def warn_of_tag_deprecation(tag_name, options={})
52
+ message = "Deprecated radius tag <r:#{tag_name}>"
53
+ message << " will be removed or significantly changed in radiant #{options[:deadline]}." if options[:deadline]
54
+ message << " Please use <r:#{options[:substitute]}> instead." if options[:substitute]
55
+ ActiveSupport::Deprecation.warn(message)
56
+ end
57
+
58
+ module ClassMethods
59
+ def inherited(subclass)
60
+ subclass.tag_descriptions.reverse_merge! self.tag_descriptions
61
+ super
62
+ end
63
+
64
+ def tag_descriptions(hash = nil)
65
+ TrustyCms::Taggable.tag_descriptions[self.name] ||= (hash ||{})
66
+ end
67
+
68
+ def desc(text)
69
+ TrustyCms::Taggable.last_description = text
70
+ # TrustyCms::Taggable.last_description = RedCloth.new(Util.strip_leading_whitespace(text)).to_html
71
+ end
72
+
73
+ def tag(name, &block)
74
+ self.tag_descriptions[name] = TrustyCms::Taggable.last_description if TrustyCms::Taggable.last_description
75
+ TrustyCms::Taggable.last_description = nil
76
+ define_method("tag:#{name}", &block)
77
+ end
78
+
79
+ def tags
80
+ Util.tags_in_array(self.instance_methods)
81
+ end
82
+
83
+ # Define a tag while also deprecating it. Normal usage:
84
+ #
85
+ # deprecated_tag 'old:way', :substitute => 'new:way', :deadline => '1.1.1'
86
+ #
87
+ # If no substitute is given then a warning will be issued but nothing rendered.
88
+ # If a deadline version is provided then it will be mentioned in the deprecation warnings.
89
+ #
90
+ # In less standard situations you can use deprecated_tag in exactly the
91
+ # same way as tags are normally defined:
92
+ #
93
+ # desc %{
94
+ # Please note that the old r:busted namespace is no longer supported.
95
+ # Refer to the documentation for more about the new r:hotness tags.
96
+ # }
97
+ # deprecated_tag 'busted' do |tag|
98
+ # raise TagError "..."
99
+ # end
100
+ #
101
+ def deprecated_tag(name, options={}, &dblock)
102
+ TrustyCms::Taggable.tag_deprecations[name] = options.dup
103
+ if dblock
104
+ tag(name) do |tag|
105
+ warn_of_tag_deprecation(name, options)
106
+ dblock.call(tag)
107
+ end
108
+ else
109
+ tag(name) do |tag|
110
+ warn_of_tag_deprecation(name, options)
111
+ tag.render(options[:substitute], tag.attr.dup, &tag.block) if options[:substitute]
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ module Util
118
+ def self.tags_in_array(array)
119
+ array.grep(/^tag:/).map { |name| name[4..-1] }.sort
120
+ end
121
+
122
+ def self.strip_leading_whitespace(text)
123
+ text = text.dup
124
+ text.gsub!("\t", " ")
125
+ lines = text.split("\n")
126
+ leading = lines.map do |line|
127
+ unless line =~ /^\s*$/
128
+ line.match(/^(\s*)/)[0].length
129
+ else
130
+ nil
131
+ end
132
+ end.compact.min
133
+ lines.inject([]) {|ary, line| ary << line.sub(/^[ ]{#{leading}}/, "")}.join("\n")
134
+ end
135
+
136
+ end
137
+
138
+ end
@@ -0,0 +1,66 @@
1
+ module TrustyCms
2
+ class TaskSupport
3
+ class << self
4
+ def establish_connection
5
+ unless ActiveRecord::Base.connected?
6
+ connection_hash = YAML.load_file("#{Rails.root}/config/database.yml").to_hash
7
+ env_connection = connection_hash[Rails.env]
8
+ ActiveRecord::Base.establish_connection(env_connection)
9
+ end
10
+ end
11
+ def config_export(path = "#{Rails.root}/config/radiant_config.yml")
12
+ self.establish_connection
13
+ FileUtils.mkdir_p(File.dirname(path))
14
+ if File.open(File.expand_path(path), 'w') { |f| YAML.dump(TrustyCms::Config.to_hash.to_yaml,f) }
15
+ puts "TrustyCms::Config saved to #{path}"
16
+ end
17
+ end
18
+ def config_import(path = "#{Rails.root}/config/radiant_config.yml", clear = nil)
19
+ self.establish_connection
20
+ if File.exist?(path)
21
+ begin
22
+ TrustyCms::Config.transaction do
23
+ TrustyCms::Config.delete_all if clear
24
+ configs = YAML.load(YAML.load_file(path))
25
+ configs.each do |key, value|
26
+ c = TrustyCms::Config.find_or_initialize_by_key(key)
27
+ c.value = value
28
+ c.save
29
+ end
30
+ end
31
+ puts "TrustyCms::Config updated from #{path}"
32
+ rescue ActiveRecord::RecordInvalid => e
33
+ puts "IMPORT FAILED and rolled back. #{e}"
34
+ end
35
+ else
36
+ puts "No file exists at #{path}"
37
+ end
38
+ end
39
+
40
+ # Write the combined content of files in dir into cache_file in the same dir.
41
+ #
42
+ def cache_files(dir, files, cache_file)
43
+ cache_content = files.collect { |f|
44
+ File.read(File.join(dir, f)) }.join("\n\n")
45
+
46
+ cache_path = File.join(dir, cache_file)
47
+ File.delete(cache_path) if File.exists?(cache_path)
48
+ File.open(cache_path, "w+") { |f| f.write(cache_content) }
49
+ end
50
+
51
+ # Reads through the layout file and returns an array of JS filenames
52
+ #
53
+ def find_admin_js
54
+ layout = "#{TRUSTY_CMS_ROOT}/app/views/layouts/application.html.haml"
55
+ js_regexp = /javascript_include_tag %w\((.*)\), :cache => 'admin\/all/
56
+ files = File.open(layout) { |f| f.read.match(js_regexp)[1].split }
57
+ files.collect { |f| f.split('/').last + '.js' }
58
+ end
59
+
60
+ def cache_admin_js
61
+ dir = "#{Rails.root}/public/javascripts/admin"
62
+ cache_files(dir, find_admin_js, 'all.js')
63
+ end
64
+ end
65
+ end
66
+ end
data/lib/trusty_cms.rb ADDED
@@ -0,0 +1,19 @@
1
+ TRUSTY_CMS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), "..")) unless defined? TRUSTY_CMS_ROOT
2
+
3
+ unless defined? TrustyCms::Version
4
+ module TrustyCms
5
+ module Version
6
+ Major = '1'
7
+ Minor = '0'
8
+ Tiny = '0'
9
+ Patch = nil # set to nil for normal release
10
+
11
+ class << self
12
+ def to_s
13
+ [Major, Minor, Tiny, Patch].delete_if{|v| v.nil? }.join('.')
14
+ end
15
+ alias :to_str :to_s
16
+ end
17
+ end
18
+ end
19
+ end
data/log/.keep ADDED
File without changes
data/public/.htaccess ADDED
@@ -0,0 +1,40 @@
1
+ # General Apache options
2
+ AddHandler fastcgi-script .fcgi
3
+ #AddHandler cgi-script .cgi
4
+ Options +FollowSymLinks +ExecCGI
5
+
6
+ # If you don't want Rails to look in certain directories,
7
+ # use the following rewrite rules so that Apache won't rewrite certain requests
8
+ #
9
+ # Example:
10
+ # RewriteCond %{REQUEST_URI} ^/notrails.*
11
+ # RewriteRule .* - [L]
12
+
13
+ # Redirect all requests not available on the filesystem to Rails
14
+ # By default the cgi dispatcher is used which is very slow
15
+ #
16
+ # For better performance replace the dispatcher with the fastcgi one
17
+ #
18
+ # Example:
19
+ # RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
20
+ RewriteEngine On
21
+
22
+ # If your Rails application is accessed via an Alias directive,
23
+ # then you MUST also set the RewriteBase in this htaccess file.
24
+ #
25
+ # Example:
26
+ # Alias /myrailsapp /path/to/myrailsapp/public
27
+ # RewriteBase /myrailsapp
28
+
29
+ RewriteRule ^$ index.html [QSA]
30
+ RewriteRule ^([^.]+)$ $1.html [QSA]
31
+ RewriteCond %{REQUEST_FILENAME} !-f
32
+ RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
33
+
34
+ # In case Rails experiences terminal errors
35
+ # Instead of displaying this message you can supply a file here which will be rendered instead
36
+ #
37
+ # Example:
38
+ # ErrorDocument 500 /500.html
39
+
40
+ ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
data/public/404.html ADDED
@@ -0,0 +1,8 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2
+ "http://www.w3.org/TR/html4/loose.dtd">
3
+ <html>
4
+ <body>
5
+ <h1>File not found</h1>
6
+ <p>Change this error message for pages not found in public/404.html</p>
7
+ </body>
8
+ </html>
data/public/500.html ADDED
@@ -0,0 +1,8 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2
+ "http://www.w3.org/TR/html4/loose.dtd">
3
+ <html>
4
+ <body>
5
+ <h1>Application error</h1>
6
+ <p>Change this error message for exceptions thrown outside of an action (like in Dispatcher setups or broken Ruby code) in public/500.html</p>
7
+ </body>
8
+ </html>
@@ -0,0 +1,10 @@
1
+ #!/home/rails/bin/ruby
2
+
3
+ require File.dirname(__FILE__) + "/../config/environment" unless defined?(Rails.root)
4
+
5
+ # If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
6
+ # "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
7
+ require "dispatcher"
8
+
9
+ ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
10
+ Dispatcher.dispatch
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # You may specify the path to the FastCGI crash log (a log of unhandled
4
+ # exceptions which forced the FastCGI instance to exit, great for debugging)
5
+ # and the number of requests to process before running garbage collection.
6
+ #
7
+ # By default, the FastCGI crash log is Rails.root/log/fastcgi.crash.log
8
+ # and the GC period is nil (turned off). A reasonable number of requests
9
+ # could range from 10-100 depending on the memory footprint of your app.
10
+ #
11
+ # Example:
12
+ # # Default log path, normal GC behavior.
13
+ # RailsFCGIHandler.process!
14
+ #
15
+ # # Default log path, 50 requests between GC.
16
+ # RailsFCGIHandler.process! nil, 50
17
+ #
18
+ # # Custom log path, normal GC behavior.
19
+ # RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log'
20
+ #
21
+ require File.dirname(__FILE__) + "/../config/environment"
22
+ require 'fcgi_handler'
23
+
24
+ RailsFCGIHandler.process!
@@ -0,0 +1,10 @@
1
+ #!/home/rails/bin/ruby
2
+
3
+ require File.dirname(__FILE__) + "/../config/environment" unless defined?(Rails.root)
4
+
5
+ # If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
6
+ # "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
7
+ require "dispatcher"
8
+
9
+ ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
10
+ Dispatcher.dispatch
File without changes
Binary file