iqvoc 3.2.3
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.
- data/Gemfile +69 -0
- data/Gemfile.lock +134 -0
- data/LICENSE +13 -0
- data/README.md +68 -0
- data/Rakefile +23 -0
- data/app/controllers/application_controller.rb +125 -0
- data/app/controllers/collections/hierarchical_controller.rb +44 -0
- data/app/controllers/collections_controller.rb +124 -0
- data/app/controllers/concepts/alphabetical_controller.rb +39 -0
- data/app/controllers/concepts/hierarchical_controller.rb +74 -0
- data/app/controllers/concepts/untranslated_controller.rb +38 -0
- data/app/controllers/concepts/versions_controller.rb +119 -0
- data/app/controllers/concepts_controller.rb +174 -0
- data/app/controllers/dashboard_controller.rb +43 -0
- data/app/controllers/pages_controller.rb +22 -0
- data/app/controllers/rdf_controller.rb +43 -0
- data/app/controllers/search_results_controller.rb +101 -0
- data/app/controllers/triple_store_syncs_controller.rb +45 -0
- data/app/controllers/user_sessions_controller.rb +48 -0
- data/app/controllers/users_controller.rb +81 -0
- data/app/helpers/application_helper.rb +60 -0
- data/app/helpers/concepts_helper.rb +86 -0
- data/app/helpers/dashboard_helper.rb +46 -0
- data/app/helpers/rdf_helper.rb +63 -0
- data/app/helpers/search_results_helper.rb +32 -0
- data/app/models/collection/base.rb +161 -0
- data/app/models/collection/member/base.rb +23 -0
- data/app/models/collection/member/collection.rb +33 -0
- data/app/models/collection/member/concept.rb +33 -0
- data/app/models/collection/unordered.rb +18 -0
- data/app/models/concept/base.rb +418 -0
- data/app/models/concept/relation/base.rb +95 -0
- data/app/models/concept/relation/reverse_relation_extension.rb +49 -0
- data/app/models/concept/relation/skos/base.rb +37 -0
- data/app/models/concept/relation/skos/broader/base.rb +41 -0
- data/app/models/concept/relation/skos/broader/mono.rb +28 -0
- data/app/models/concept/relation/skos/broader/poly.rb +23 -0
- data/app/models/concept/relation/skos/narrower/base.rb +37 -0
- data/app/models/concept/relation/skos/related.rb +21 -0
- data/app/models/concept/skos/base.rb +28 -0
- data/app/models/label/base.rb +98 -0
- data/app/models/label/skos/base.rb +27 -0
- data/app/models/labeling/base.rb +81 -0
- data/app/models/labeling/skos/alt_label.rb +21 -0
- data/app/models/labeling/skos/base.rb +99 -0
- data/app/models/labeling/skos/hidden_label.rb +25 -0
- data/app/models/labeling/skos/pref_label.rb +30 -0
- data/app/models/match/base.rb +57 -0
- data/app/models/match/skos/base.rb +23 -0
- data/app/models/match/skos/broad_match.rb +21 -0
- data/app/models/match/skos/close_match.rb +21 -0
- data/app/models/match/skos/exact_match.rb +21 -0
- data/app/models/match/skos/mapping_relation.rb +21 -0
- data/app/models/match/skos/narrow_match.rb +21 -0
- data/app/models/match/skos/related_match.rb +21 -0
- data/app/models/note/annotated/base.rb +29 -0
- data/app/models/note/base.rb +127 -0
- data/app/models/note/skos/base.rb +52 -0
- data/app/models/note/skos/change_note.rb +38 -0
- data/app/models/note/skos/definition.rb +33 -0
- data/app/models/note/skos/editorial_note.rb +21 -0
- data/app/models/note/skos/example.rb +21 -0
- data/app/models/note/skos/history_note.rb +21 -0
- data/app/models/note/skos/scope_note.rb +21 -0
- data/app/models/origin_mapping.rb +58 -0
- data/app/models/rdf_store.rb +96 -0
- data/app/models/search_extension.rb +58 -0
- data/app/models/user.rb +49 -0
- data/app/models/user_session.rb +23 -0
- data/app/views/collections/_collection.html.erb +10 -0
- data/app/views/collections/_form.html.erb +47 -0
- data/app/views/collections/edit.html.erb +11 -0
- data/app/views/collections/index.html.erb +12 -0
- data/app/views/collections/new.html.erb +7 -0
- data/app/views/collections/show.html.erb +53 -0
- data/app/views/collections/show.iqrdf +22 -0
- data/app/views/concepts/_base_data.html.erb +72 -0
- data/app/views/concepts/_close_match.html.erb +16 -0
- data/app/views/concepts/_show_head.html.erb +23 -0
- data/app/views/concepts/_visualization.html.erb +9 -0
- data/app/views/concepts/alphabetical/_pref_labeling.html.erb +6 -0
- data/app/views/concepts/alphabetical/index.html.erb +17 -0
- data/app/views/concepts/edit.html.erb +32 -0
- data/app/views/concepts/hierarchical/_treeview.html.erb +20 -0
- data/app/views/concepts/hierarchical/index.html.erb +5 -0
- data/app/views/concepts/index.iqrdf +24 -0
- data/app/views/concepts/new.html.erb +3 -0
- data/app/views/concepts/show_published.html.erb +16 -0
- data/app/views/concepts/show_unpublished.html.erb +43 -0
- data/app/views/concepts/untranslated/index.html.erb +23 -0
- data/app/views/dashboard/index.html.erb +47 -0
- data/app/views/errors/access_denied.html.erb +3 -0
- data/app/views/errors/multiple_choices.html.erb +11 -0
- data/app/views/errors/not_found.html.erb +8 -0
- data/app/views/kaminari/_page.html.erb +6 -0
- data/app/views/kaminari/_paginator.html.erb +15 -0
- data/app/views/layouts/_controls.html.erb +37 -0
- data/app/views/layouts/_header.html.erb +1 -0
- data/app/views/layouts/_navigation.html.erb +27 -0
- data/app/views/layouts/_sections.html.erb +8 -0
- data/app/views/layouts/application.html.erb +83 -0
- data/app/views/pages/about.html.erb +77 -0
- data/app/views/partials/_rdf_logo.html.erb +4 -0
- data/app/views/partials/collection/_member.html.erb +14 -0
- data/app/views/partials/collection_label/_search_result.html.erb +5 -0
- data/app/views/partials/concept/_edit_link_base.html.erb +4 -0
- data/app/views/partials/concept/_inline_base.html.erb +4 -0
- data/app/views/partials/concept/_new_link_base.html.erb +4 -0
- data/app/views/partials/concept/relation/_base.html.erb +8 -0
- data/app/views/partials/concept/relation/_edit_base.html.erb +15 -0
- data/app/views/partials/concept/relation/skos/_narrower.html.erb +12 -0
- data/app/views/partials/concept/relation/skos/broader/_mono.html.erb +28 -0
- data/app/views/partials/concept/relation/skos/broader/_poly.html.erb +14 -0
- data/app/views/partials/labeling/skos/_base.html.erb +17 -0
- data/app/views/partials/labeling/skos/_edit_base.html.erb +7 -0
- data/app/views/partials/labeling/skos/_search_result.html.erb +12 -0
- data/app/views/partials/match/_base.html.erb +13 -0
- data/app/views/partials/match/_edit_base.html.erb +6 -0
- data/app/views/partials/note/_base.html.erb +15 -0
- data/app/views/partials/note/_edit_base.html.erb +28 -0
- data/app/views/partials/note/_note.html.erb +14 -0
- data/app/views/partials/note/_search_result.html.erb +8 -0
- data/app/views/partials/note/skos/_edit_change_note.html.erb +47 -0
- data/app/views/partials/note/skos/definition/_search_result.html.erb +8 -0
- data/app/views/rdf/show_concept.iqrdf +5 -0
- data/app/views/search_results/_head_contents.html.erb +4 -0
- data/app/views/search_results/_rdf_links.html.erb +4 -0
- data/app/views/search_results/index.html.erb +92 -0
- data/app/views/search_results/index.iqrdf +33 -0
- data/app/views/triple_store_syncs/new.html.erb +7 -0
- data/app/views/user_sessions/new.html.erb +11 -0
- data/app/views/users/_form.html.erb +45 -0
- data/app/views/users/_user_preference.html.erb +12 -0
- data/app/views/users/edit.html.erb +14 -0
- data/app/views/users/index.html.erb +29 -0
- data/app/views/users/new.html.erb +13 -0
- data/config/application.rb +82 -0
- data/config/boot.rb +29 -0
- data/config/database.template.yml +43 -0
- data/config/database.yml +40 -0
- data/config/deploy/common.rb +79 -0
- data/config/deploy/ec2.rb +43 -0
- data/config/deploy/history.rb +29 -0
- data/config/deploy/innoq.rb +37 -0
- data/config/deploy.rb +72 -0
- data/config/engine.rb +25 -0
- data/config/environment.rb +21 -0
- data/config/environments/development.rb +74 -0
- data/config/environments/production.rb +65 -0
- data/config/environments/production.template.rb +65 -0
- data/config/environments/production_internal.rb +65 -0
- data/config/environments/test.rb +51 -0
- data/config/initializers/action_view.rb +23 -0
- data/config/initializers/active_record.rb +18 -0
- data/config/initializers/backtrace_silencers.rb +23 -0
- data/config/initializers/inflections.rb +26 -0
- data/config/initializers/iqvoc.rb +50 -0
- data/config/initializers/jdbc.rb +23 -0
- data/config/initializers/kaminari_config.rb +8 -0
- data/config/initializers/language.rb +6 -0
- data/config/initializers/mime_types.rb +24 -0
- data/config/initializers/secret_token.rb +29 -0
- data/config/initializers/secret_token.rb.template +29 -0
- data/config/initializers/session_store.rb +24 -0
- data/config/locales/activerecord.de.yml +135 -0
- data/config/locales/activerecord.en.yml +135 -0
- data/config/locales/authlogic.de.yml +38 -0
- data/config/locales/authlogic.en.yml +38 -0
- data/config/locales/de.yml +326 -0
- data/config/locales/defaults.de.yml +153 -0
- data/config/locales/en.yml +332 -0
- data/config/routes.rb +53 -0
- data/config/warble.rb +158 -0
- data/db/iqvoc_test.sqlite3 +0 -0
- data/db/migrate/20100927101502_create_schema.rb +174 -0
- data/db/migrate/20101125141218_add_collection_tables.rb +32 -0
- data/db/migrate/20101129161528_add_type_to_collections.rb +24 -0
- data/db/migrate/20101202094602_add_origin_to_collections.rb +25 -0
- data/db/migrate/20101202135420_rename_collection_contents_to_collection_members.rb +25 -0
- data/db/migrate/20101208103531_add_type_to_collection_contents.rb +27 -0
- data/db/migrate/20101210153916_add_indexes_to_collections.rb +25 -0
- data/db/migrate/20110204121244_create_collection_labels.rb +32 -0
- data/db/migrate/20110208084250_change_origin_lengths.rb +27 -0
- data/db/migrate/20110328124300_discard_collection_specifics.rb +27 -0
- data/db/migrate/20110408120357_remove_classifications_and_classifiers.rb +32 -0
- data/db/migrate/20110408120740_remove_xl_specfic_stuff.rb +39 -0
- data/db/migrate/20110420133640_change_value_in_notes.rb +8 -0
- data/db/migrate/20110427120534_add_published_at_to_labels.rb +9 -0
- data/db/migrate/20110510162719_use_mono_hierarchy_instead_of_poly_hierarchy.rb +13 -0
- data/db/migrate/20110512132624_extend_notes_value_field_length.rb +8 -0
- data/db/migrate/20110525103100_separate_note_annotation_predicates.rb +38 -0
- data/db/migrate/20110615134040_change_umt_note_annotations_to_dct.rb +9 -0
- data/db/schema.rb +127 -0
- data/db/seeds.rb +37 -0
- data/iqvoc.gemspec +27 -0
- data/lib/engine_tasks/assets.rake +49 -0
- data/lib/engine_tasks/db.rake +18 -0
- data/lib/engine_tasks/release.rake +118 -0
- data/lib/iqvoc/ability.rb +44 -0
- data/lib/iqvoc/data_helper.rb +27 -0
- data/lib/iqvoc/deep_cloning.rb +92 -0
- data/lib/iqvoc/rdf_helper.rb +67 -0
- data/lib/iqvoc/skos_importer.rb +144 -0
- data/lib/iqvoc/version.rb +19 -0
- data/lib/iqvoc/versioning.rb +151 -0
- data/lib/iqvoc.rb +228 -0
- data/lib/maker.rb +144 -0
- data/lib/ojdbc14.jar +0 -0
- data/lib/string.rb +23 -0
- data/lib/tasks/importer.rake +16 -0
- data/lib/tasks/jdbc.rake +24 -0
- data/public/404.html +26 -0
- data/public/422.html +26 -0
- data/public/500.html +26 -0
- data/public/favicon.ico +0 -0
- data/public/images/iqvoc/add.png +0 -0
- data/public/images/iqvoc/arrow_down.gif +0 -0
- data/public/images/iqvoc/arrow_up.gif +0 -0
- data/public/images/iqvoc/footer.png +0 -0
- data/public/images/iqvoc/go_there.png +0 -0
- data/public/images/iqvoc/header.png +0 -0
- data/public/images/iqvoc/header_long.png +0 -0
- data/public/images/iqvoc/iqvoc.png +0 -0
- data/public/images/iqvoc/note_add.png +0 -0
- data/public/images/iqvoc/note_delete.png +0 -0
- data/public/images/iqvoc/note_edit.png +0 -0
- data/public/images/iqvoc/ok.png +0 -0
- data/public/images/iqvoc/rails.png +0 -0
- data/public/images/iqvoc/rdf_flyer.gif +0 -0
- data/public/images/iqvoc/red_arrow.png +0 -0
- data/public/images/iqvoc/remove.png +0 -0
- data/public/images/iqvoc/shadow.png +0 -0
- data/public/images/iqvoc/spinner.gif +0 -0
- data/public/images/iqvoc/tokenizer_delete.png +0 -0
- data/public/images/iqvoc/tokenizer_pencile.png +0 -0
- data/public/images/iqvoc/tokenizer_show.png +0 -0
- data/public/images/iqvoc/unfinished.png +0 -0
- data/public/javascripts/iqvoc/application.js +123 -0
- data/public/javascripts/iqvoc/entityselect.js +121 -0
- data/public/javascripts/iqvoc/excanvas.js +35 -0
- data/public/javascripts/iqvoc/iqvoc.js +118 -0
- data/public/javascripts/iqvoc/jit_rgraph.js +153 -0
- data/public/javascripts/iqvoc/jquery-1.6.2.min.js +18 -0
- data/public/javascripts/iqvoc/jquery-treeview/changelog.txt +29 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/async.html +44 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/bg.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/demo.js +43 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/images.html +56 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/index.html +340 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/large.html +559 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/prerendered.html +621 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/screen.css +24 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/simple.html +82 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/source.php +87 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/source.phps +87 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/ajax-loader.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/file.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/folder-closed.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/folder.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/minus.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/plus.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-black-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-black.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-default-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-default.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-famfamfam-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-famfamfam.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-gray-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-gray.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-red-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-red.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.async.js +82 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.css +75 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.js +251 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.min.js +15 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.pack.js +16 -0
- data/public/javascripts/iqvoc/jquery-treeview/lib/jquery.cookie.js +92 -0
- data/public/javascripts/iqvoc/jquery-treeview/lib/jquery.js +3363 -0
- data/public/javascripts/iqvoc/jquery-treeview/todo +8 -0
- data/public/javascripts/iqvoc/jquery-ui-1.8.13.custom.js +3229 -0
- data/public/javascripts/iqvoc/jquery-ui-1.8.13.custom.min.js +163 -0
- data/public/javascripts/iqvoc/jquery-ui.datepicker-de.js +22 -0
- data/public/javascripts/iqvoc/json2.js +480 -0
- data/public/javascripts/iqvoc/langselect.js +73 -0
- data/public/javascripts/iqvoc/rails.js +132 -0
- data/public/javascripts/iqvoc/storage.js +122 -0
- data/public/javascripts/iqvoc/visualization.js +321 -0
- data/public/robots.txt +5 -0
- data/public/stylesheets/iqvoc/blueprint/ie.css +35 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/icons/cross.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/icons/key.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/icons/tick.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/readme.txt +32 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/screen.css +97 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/fancy-type/readme.txt +14 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/fancy-type/screen.css +71 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/doc.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/email.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/external.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/feed.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/im.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/pdf.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/visited.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/xls.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/readme.txt +18 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/screen.css +40 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/rtl/readme.txt +10 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/rtl/screen.css +110 -0
- data/public/stylesheets/iqvoc/blueprint/print.css +29 -0
- data/public/stylesheets/iqvoc/blueprint/screen.css +258 -0
- data/public/stylesheets/iqvoc/blueprint/src/forms.css +65 -0
- data/public/stylesheets/iqvoc/blueprint/src/grid.css +280 -0
- data/public/stylesheets/iqvoc/blueprint/src/grid.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/src/ie.css +76 -0
- data/public/stylesheets/iqvoc/blueprint/src/print.css +85 -0
- data/public/stylesheets/iqvoc/blueprint/src/reset.css +45 -0
- data/public/stylesheets/iqvoc/blueprint/src/typography.css +106 -0
- data/public/stylesheets/iqvoc/forms.css +71 -0
- data/public/stylesheets/iqvoc/images/back.png +0 -0
- data/public/stylesheets/iqvoc/images/branch.png +0 -0
- data/public/stylesheets/iqvoc/images/categ.png +0 -0
- data/public/stylesheets/iqvoc/images/categ_open.png +0 -0
- data/public/stylesheets/iqvoc/images/go_there.png +0 -0
- data/public/stylesheets/iqvoc/images/iqvoc.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_end.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_end_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_mid.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_mid_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_nothing.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_only.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_only_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_top.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_top_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/nothing.png +0 -0
- data/public/stylesheets/iqvoc/images/top_01.png +0 -0
- data/public/stylesheets/iqvoc/images/trunk.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_217bc0_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_469bdd_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_6da8d5_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_f9bd01_256x240.png +0 -0
- data/public/stylesheets/iqvoc/iqvoc.css +477 -0
- data/public/stylesheets/iqvoc/jquery-ui-1.8.13.custom.css +415 -0
- data/public/stylesheets/iqvoc/widgets.css +81 -0
- data/test/factories.rb +74 -0
- data/test/integration/alphabetical_test.rb +53 -0
- data/test/integration/authentication_test.rb +41 -0
- data/test/integration/browse_concepts_and_labels_test.rb +61 -0
- data/test/integration/browse_static_pages_test.rb +29 -0
- data/test/integration/client_augmentation_test.rb +42 -0
- data/test/integration/client_edit_concept_test.rb +72 -0
- data/test/integration/collection_circularity_test.rb +110 -0
- data/test/integration/concept_test.rb +61 -0
- data/test/integration/edit_concepts_test.rb +40 -0
- data/test/integration/note_annotations_test.rb +86 -0
- data/test/integration/search_test.rb +205 -0
- data/test/integration/tree_test.rb +31 -0
- data/test/integration/untranslated_test.rb +60 -0
- data/test/integration_test_helper.rb +45 -0
- data/test/performance/browsing_test.rb +25 -0
- data/test/test_helper.rb +29 -0
- data/test/unit/concept_test.rb +93 -0
- data/test/unit/note_test.rb +32 -0
- data/test/unit/origin_mapping_test.rb +70 -0
- data/test/unit/skos_import_test.rb +100 -0
- metadata +522 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
Iqvoc.default_rdf_namespace_helper_methods.each do |meth|
|
2
|
+
document.namespaces(self.send(meth))
|
3
|
+
end
|
4
|
+
|
5
|
+
document.namespaces(
|
6
|
+
:search => url_for(request.query_parameters.merge(:page => @results && @results.current_page, :only_path => false, :anchor => "")),
|
7
|
+
:sdc => "http://sindice.com/vocab/search#"
|
8
|
+
)
|
9
|
+
|
10
|
+
document << IqRdf.build_full_uri_subject(URI.parse(url_for(request.query_parameters.merge(:page => nil, :only_path => false))), IqRdf::Sdc::build_uri('Query')) do |query|
|
11
|
+
query.Sdc::totalResults(@results.total_count)
|
12
|
+
query.Sdc::itemsPerPage(@results.limit_value)
|
13
|
+
query.Sdc::searchTerms(params[:query])
|
14
|
+
query.Sdc::first(URI.parse(url_for(request.query_parameters.merge(:page => 1, :only_path => false))))
|
15
|
+
query.Sdc::last(URI.parse(url_for(request.query_parameters.merge(:page => @results.num_pages, :only_path => false))))
|
16
|
+
i = 0
|
17
|
+
@results.each do
|
18
|
+
query.Sdc::result(IqRdf::Search::build_uri("result#{i+=1}"))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
document << IqRdf.build_full_uri_subject(URI.parse(url_for(request.query_parameters.merge(:page => @results.current_page, :only_path => false))), IqRdf::Sdc::build_uri('Page')) do |page|
|
23
|
+
page.Sdc::startIndex((@results.current_page - 1) * @results.limit_value + 1)
|
24
|
+
page.Sdc::previous(URI.parse(url_for(request.query_parameters.merge(:page => @results.current_page - 1, :only_path => false)))) if @results.current_page > 1
|
25
|
+
page.Sdc::next(URI.parse(url_for(request.query_parameters.merge(:page => @results.current_page + 1, :only_path => false)))) if @results.current_page < @results.num_pages
|
26
|
+
end
|
27
|
+
|
28
|
+
i = 0
|
29
|
+
@results.each do |result|
|
30
|
+
document << IqRdf::Search::build_uri("result#{i+=1}", IqRdf::Sdc::build_uri('Result')) do |result_node|
|
31
|
+
result.build_search_result_rdf(document, result_node)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h2><%= t("txt.views.user_sessions.header") %></h2>
|
2
|
+
|
3
|
+
<%= form_for @user_session, :url => user_session_path(:back_to => params[:back_to]) do |f| %>
|
4
|
+
<%= f.label :email, t("txt.views.user_sessions.email") %><br />
|
5
|
+
<%= f.text_field :email %><br />
|
6
|
+
<br />
|
7
|
+
<%= f.label :password, t("txt.views.user_sessions.password") %><br />
|
8
|
+
<%= f.password_field :password %><br />
|
9
|
+
<br />
|
10
|
+
<%= f.submit t("txt.views.user_sessions.login") %>
|
11
|
+
<% end %>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<fieldset>
|
2
|
+
<ol>
|
3
|
+
<li>
|
4
|
+
<%= f.label :forename, User.human_attribute_name(:forename) %>
|
5
|
+
<%= f.text_field :forename %>
|
6
|
+
</li>
|
7
|
+
|
8
|
+
<li>
|
9
|
+
<%= f.label :surname, User.human_attribute_name(:surname) %>
|
10
|
+
<%= f.text_field :surname %>
|
11
|
+
</li>
|
12
|
+
|
13
|
+
<li>
|
14
|
+
<%= f.label :email, User.human_attribute_name(:email) %>
|
15
|
+
<%= f.text_field :email %>
|
16
|
+
</li>
|
17
|
+
|
18
|
+
<li>
|
19
|
+
<%= f.label :telephone_number, User.human_attribute_name(:telephone_number) %>
|
20
|
+
<%= f.text_field :telephone_number %>
|
21
|
+
</li>
|
22
|
+
|
23
|
+
<li>
|
24
|
+
<%= f.label :password, User.human_attribute_name(:password) %>
|
25
|
+
<%= f.password_field :password %>
|
26
|
+
</li>
|
27
|
+
|
28
|
+
<li>
|
29
|
+
<%= f.label :password_confirmation, User.human_attribute_name(:password_confirmation) %>
|
30
|
+
<%= f.password_field :password_confirmation %>
|
31
|
+
</li>
|
32
|
+
|
33
|
+
<li>
|
34
|
+
<%= f.label :role, User.human_attribute_name(:role) %>
|
35
|
+
<%= f.select :role, User::ROLES.map {|r| [r.humanize, r]} %>
|
36
|
+
</li>
|
37
|
+
|
38
|
+
<li>
|
39
|
+
<%= f.check_box :active %>
|
40
|
+
<%= f.label :active, User.human_attribute_name(:active) %>
|
41
|
+
</li>
|
42
|
+
</ol>
|
43
|
+
</fieldset>
|
44
|
+
|
45
|
+
<%= f.submit t('txt.views.users.submit') %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="user_preference">
|
2
|
+
<% new_or_existing = user_preference.new_record? ? 'new' : 'existing' %>
|
3
|
+
<% prefix = "user[#{new_or_existing}_preferences_attributes][]" -%>
|
4
|
+
|
5
|
+
<% fields_for prefix, user_preference do |preference_form| %>
|
6
|
+
<label for="<%= dom_id user_preference %>_key"><%= t('Name') %>:</label><br />
|
7
|
+
<%= preference_form.text_field :key, :size => 20 %><br />
|
8
|
+
<label for="<%= dom_id user_preference %>_value"><%= t('Value') %>:</label><br />
|
9
|
+
<%= preference_form.text_field :value, :size => 20 %>
|
10
|
+
<%= link_to_function image_tag('iqvoc/remove.png'), "$(this).up('.user_preference').remove()", :title => t('Remove') %>
|
11
|
+
<% end -%>
|
12
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<h2><%= t('txt.views.users.edit.header') %></h2>
|
2
|
+
|
3
|
+
<%= error_messages_for @user %>
|
4
|
+
|
5
|
+
<%= form_for(@user, :url => user_path(:id => @user), :html => {:class => "form"}) do |f| %>
|
6
|
+
<%= render :partial => "form", :locals => { :f => f } %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= content_for :sub_navigation do %>
|
10
|
+
<ul>
|
11
|
+
<li><%= link_to t('txt.common.back'), users_path, :class => 'back' %> | </li>
|
12
|
+
<li><%= link_to t('txt.views.users.new_link'), new_user_path%></li>
|
13
|
+
</ul>
|
14
|
+
<% end %>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<h2><%= t('txt.views.users.index.header') %></h2>
|
2
|
+
|
3
|
+
<table class="management">
|
4
|
+
<tr>
|
5
|
+
<th><%= t('txt.views.users.name') %></th>
|
6
|
+
<th><%= t('txt.views.users.email') %></th>
|
7
|
+
<th><%= t('txt.views.users.telephone_number') %></th>
|
8
|
+
<th><%= t('txt.views.users.role') %></th>
|
9
|
+
<th><%= t('txt.views.users.active') %></th>
|
10
|
+
</tr>
|
11
|
+
|
12
|
+
<% @users.each do |user| %>
|
13
|
+
<tr>
|
14
|
+
<td><%=h user.name %></td>
|
15
|
+
<td><%=h user.email %></td>
|
16
|
+
<td><%=h user.telephone_number %></td>
|
17
|
+
<td><%=h user.role.humanize %></td>
|
18
|
+
<td><%=h user.active? ? 1 : 0 %></td>
|
19
|
+
<td><%= link_to t('txt.views.users.edit_link'), edit_user_path(:id => user), :class => "button" %></td>
|
20
|
+
<td><%= button_to t('txt.views.users.destroy_link'), user_path(:id => user), :confirm => t('txt.views.users.sure'), :method => :delete %></td>
|
21
|
+
</tr>
|
22
|
+
<% end %>
|
23
|
+
</table>
|
24
|
+
|
25
|
+
<%= content_for :sub_navigation do %>
|
26
|
+
<ul>
|
27
|
+
<li><%= link_to t('txt.views.users.new_link'), new_user_path, :class => "button" %></li>
|
28
|
+
</ul>
|
29
|
+
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<h2><%= t('txt.views.users.new.header') %></h2>
|
2
|
+
|
3
|
+
<%= error_messages_for @user %>
|
4
|
+
|
5
|
+
<%= form_for(@user, :url => users_path, :html => {:class => "form"}) do |f| %>
|
6
|
+
<%= render :partial => "form", :locals => { :f => f } %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= content_for :sub_navigation do %>
|
10
|
+
<ul>
|
11
|
+
<li><%= link_to t('txt.common.back'), users_path, :class => 'back' %></li>
|
12
|
+
</ul>
|
13
|
+
<% end %>
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require File.expand_path('../boot', __FILE__)
|
18
|
+
|
19
|
+
require 'rails/all'
|
20
|
+
|
21
|
+
# If you have a Gemfile, require the gems listed there, including any gems
|
22
|
+
# you've limited to :test, :development, or :production.
|
23
|
+
Bundler.require(:default, Rails.env) if defined?(Bundler)
|
24
|
+
|
25
|
+
module Iqvoc
|
26
|
+
class Application < Rails::Application
|
27
|
+
# Settings in config/environments/* take precedence over those specified here.
|
28
|
+
# Application configuration should go into files in config/initializers
|
29
|
+
# -- all .rb files in that directory are automatically loaded.
|
30
|
+
|
31
|
+
# Custom directories with classes and modules you want to be autoloadable.
|
32
|
+
# config.autoload_paths += %W(#{config.root}/extras)
|
33
|
+
|
34
|
+
# Only load the plugins named here, in the order given (default is alphabetical).
|
35
|
+
# :all can be used as a placeholder for all plugins not explicitly named.
|
36
|
+
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
37
|
+
|
38
|
+
# Activate observers that should always be running.
|
39
|
+
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
|
40
|
+
|
41
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
42
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
43
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
44
|
+
|
45
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
46
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
47
|
+
# config.i18n.default_locale = :en
|
48
|
+
# config.i18n.available_locales = [:de, :en]
|
49
|
+
# See: config/initializers/iqvoc.rb
|
50
|
+
|
51
|
+
# JavaScript files you want as :defaults (application.js is always included).
|
52
|
+
# config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
|
53
|
+
|
54
|
+
# Configure the default encoding used in templates for Ruby 1.9.
|
55
|
+
config.encoding = "utf-8"
|
56
|
+
|
57
|
+
# Configure sensitive parameters which will be filtered from the log file.
|
58
|
+
config.filter_parameters += [:password, :password_confirmation]
|
59
|
+
|
60
|
+
# TODO This must be refactored!
|
61
|
+
|
62
|
+
# The JDBC driver url for the coinnection to the virtuoso triple store.
|
63
|
+
# Login crdentials have to be stored here too. See
|
64
|
+
# http://docs.openlinksw.com/virtuoso/VirtuosoDriverJDBC.html#jdbcurl4mat for
|
65
|
+
# more details.
|
66
|
+
# Example: "jdbc:virtuoso://localhost:1111/UID=dba/PWD=dba"
|
67
|
+
# Use nil to disable virtuoso triple synchronization
|
68
|
+
config.virtuoso_jdbc_driver_url = nil
|
69
|
+
|
70
|
+
# Set up the virtuoso synchronization (which is a triggered pull from the
|
71
|
+
# virtuoso server) to be run in a new thread.
|
72
|
+
# This is needed in environments where the webserver only runs in a single
|
73
|
+
# process/thread (mostly in development environments).
|
74
|
+
# When a synchronizaion would be triggered e.g. from a running
|
75
|
+
# update action in the UPB, the update would trigger virtuoso to do a HTTP GET
|
76
|
+
# back to the UPB to fetch the RDF data. But the only process in the UPB would be
|
77
|
+
# blocked by the update... => Deadlock. You can avoid this by using the threaded
|
78
|
+
# mode.
|
79
|
+
config.virtuoso_sync_threaded = false
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
data/config/boot.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require 'rubygems'
|
18
|
+
|
19
|
+
# Set up gems listed in the Gemfile.
|
20
|
+
gemfile = File.expand_path('../../Gemfile', __FILE__)
|
21
|
+
begin
|
22
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
23
|
+
require 'bundler'
|
24
|
+
Bundler.setup
|
25
|
+
rescue Bundler::GemNotFound => e
|
26
|
+
STDERR.puts e.message
|
27
|
+
STDERR.puts "Try running `bundle install`."
|
28
|
+
exit!
|
29
|
+
end if File.exist?(gemfile)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<% detect_socket = lambda {
|
2
|
+
["/tmp/mysql.sock",
|
3
|
+
"/opt/local/var/run/mysql5/mysqld.sock",
|
4
|
+
"/tmp/mysqld.sock",
|
5
|
+
"/var/run/mysqld.sock"
|
6
|
+
].detect{ |socket| File.exist?(socket) }
|
7
|
+
} %>
|
8
|
+
|
9
|
+
development: &DEVELOPMENT
|
10
|
+
encoding: utf8
|
11
|
+
username: root
|
12
|
+
password:
|
13
|
+
database: iqvoc_development
|
14
|
+
<% if defined?(JRuby) %>
|
15
|
+
adapter: jdbcmysql
|
16
|
+
hostname: localhost
|
17
|
+
<% else %>
|
18
|
+
adapter: mysql2
|
19
|
+
socket: <%= detect_socket.call %>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
# Warning: The database defined as 'test' will be erased and
|
23
|
+
# re-generated from your development database when you run 'rake'.
|
24
|
+
# Do not set this db to the same as development or production.
|
25
|
+
test: &TEST
|
26
|
+
adapter: sqlite3
|
27
|
+
database: db/iqvoc_test.sqlite3
|
28
|
+
pool: 5
|
29
|
+
timeout: 5000
|
30
|
+
|
31
|
+
production_internal:
|
32
|
+
encoding: utf8
|
33
|
+
username: iqvoc
|
34
|
+
password: iqvoc
|
35
|
+
database: iqvocspez
|
36
|
+
adapter: oracle_enhanced
|
37
|
+
|
38
|
+
production:
|
39
|
+
encoding: utf8
|
40
|
+
username: iqvoc
|
41
|
+
password: iqvoc
|
42
|
+
database: iqvoc
|
43
|
+
adapter: oracle_enhanced
|
data/config/database.yml
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
<% socket = ["/tmp/mysql.sock",
|
2
|
+
"/opt/local/var/run/mysql5/mysqld.sock",
|
3
|
+
"/tmp/mysqld.sock",
|
4
|
+
"/var/run/mysqld.sock"].detect { |socket| File.exist?(socket) } %>
|
5
|
+
|
6
|
+
development: &DEVELOPMENT
|
7
|
+
encoding: utf8
|
8
|
+
username: root
|
9
|
+
password:
|
10
|
+
database: iqvoc_development
|
11
|
+
<% if defined?(JRuby) %>
|
12
|
+
adapter: jdbcmysql
|
13
|
+
hostname: localhost
|
14
|
+
<% else %>
|
15
|
+
adapter: mysql2
|
16
|
+
socket: <%= socket %>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
# Warning: The database defined as 'test' will be erased and
|
20
|
+
# re-generated from your development database when you run 'rake'.
|
21
|
+
# Do not set this db to the same as development or production.
|
22
|
+
test: &TEST
|
23
|
+
adapter: sqlite3
|
24
|
+
# database: ":memory:"
|
25
|
+
database: db/iqvoc_test.sqlite3
|
26
|
+
timeout: 5000
|
27
|
+
|
28
|
+
production_internal:
|
29
|
+
encoding: utf8
|
30
|
+
username: iqvoc
|
31
|
+
password: iqvoc
|
32
|
+
database: iqvocspez
|
33
|
+
adapter: oracle_enhanced
|
34
|
+
|
35
|
+
production:
|
36
|
+
encoding: utf8
|
37
|
+
username: iqvoc
|
38
|
+
password: iqvoc
|
39
|
+
database: iqvoc
|
40
|
+
adapter: oracle_enhanced
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
desc "Runs a rake task on the remote system. Use TASK'<taskname + parameters>' to specify the task."
|
18
|
+
task :invoke_task do
|
19
|
+
prefix = fetch(:invokeable_task_prefix, "")
|
20
|
+
if ENV['TASK'] and ENV['TASK'] =~ /^#{prefix}/
|
21
|
+
run("cd #{deploy_to}/current; rake --trace #{ENV['TASK']} RAILS_ENV=production")
|
22
|
+
else
|
23
|
+
run("cd #{deploy_to}/current; rake -T #{prefix} --trace RAILS_ENV=production")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Tail production log files"
|
28
|
+
task :tail_logs, :roles => :app do
|
29
|
+
run "tail -f #{shared_path}/log/production.log" do |channel, stream, data|
|
30
|
+
puts # for an extra line break before the host name
|
31
|
+
puts "#{channel[:host]}: #{data}"
|
32
|
+
break if stream == :err
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
namespace :deploy do
|
37
|
+
|
38
|
+
desc "Generate a secret for the server"
|
39
|
+
task :generate_secret, :roles => :app do
|
40
|
+
require 'securerandom'
|
41
|
+
|
42
|
+
template = File.expand_path("config/initializers/secret_token.rb.template")
|
43
|
+
raise "File not found: #{template}" unless File.exist?(template)
|
44
|
+
|
45
|
+
path = "#{shared_path}/config/initializers"
|
46
|
+
file_name = "#{path}/secret_token.rb"
|
47
|
+
|
48
|
+
token = SecureRandom.hex(64)
|
49
|
+
txt = File.read(template)
|
50
|
+
txt.gsub!(/#(Iqvoc::Application.config.secret_token) = '.*?'$/, "\\1 = '#{token}'")
|
51
|
+
|
52
|
+
run "mkdir -p #{path}"
|
53
|
+
put txt, file_name
|
54
|
+
end
|
55
|
+
|
56
|
+
desc "Copy your current config/database.yml to the server"
|
57
|
+
task :database_config_copy, :roles => :app do
|
58
|
+
file_name = File.expand_path("config/database.yml")
|
59
|
+
raise "File not found: #{file_name}" unless File.exist?(file_name)
|
60
|
+
run "mkdir -p #{shared_path}/config/"
|
61
|
+
put File.open(file_name).read, "#{shared_path}/config/database.yml"
|
62
|
+
end
|
63
|
+
|
64
|
+
desc "Create default SQLite3 config/database.yml"
|
65
|
+
task :database_config_sqlite3, :roles => :app do
|
66
|
+
config = {
|
67
|
+
'production' => {
|
68
|
+
"adapter" => "sqlite3",
|
69
|
+
"database" => "#{shared_path}/db/production.sqlite3",
|
70
|
+
"pool" => 5,
|
71
|
+
"timeout" => 5000,
|
72
|
+
}
|
73
|
+
}
|
74
|
+
run "mkdir -p #{shared_path}/config/"
|
75
|
+
run "mkdir -p #{shared_path}/db/"
|
76
|
+
put config.to_yaml, "#{shared_path}/config/database.yml"
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
@capistrano_history ||= {}
|
18
|
+
|
19
|
+
# main details
|
20
|
+
servername = Capistrano::CLI.ui.ask("Please enter the IP or Hostname of the ec2 instance to deploy to [#{@capistrano_history['last_servername']}]: ")
|
21
|
+
servername = @capistrano_history['last_servername'] if servername == ""
|
22
|
+
@capistrano_history['last_servername'] = servername
|
23
|
+
role :web, servername
|
24
|
+
role :app, servername
|
25
|
+
role :db, servername, :primary => true
|
26
|
+
|
27
|
+
keyfile = 'doesnt_exist'
|
28
|
+
while !File.exist?(File.expand_path(keyfile))
|
29
|
+
keyfile = Capistrano::CLI.ui.ask("Please enter the file holding the ssh key for user 'passenger' [#{@capistrano_history['last_keyfile']}]: ")
|
30
|
+
keyfile = @capistrano_history['last_keyfile'] if keyfile == ""
|
31
|
+
@capistrano_history['last_keyfile'] = keyfile
|
32
|
+
end
|
33
|
+
ssh_options[:keys] = [File.expand_path(keyfile)]
|
34
|
+
|
35
|
+
# server details
|
36
|
+
default_run_options[:pty] = true
|
37
|
+
ssh_options[:forward_agent] = true
|
38
|
+
set :deploy_to, "/var/www/default"
|
39
|
+
set :deploy_via, :remote_cache
|
40
|
+
set :user, "passenger"
|
41
|
+
set :use_sudo, false
|
42
|
+
|
43
|
+
save_history if defined?(save_history)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
# load .capistrano_history.yml to @capistrano_history
|
18
|
+
def load_history
|
19
|
+
@capistrano_history = {}
|
20
|
+
@capistrano_history = YAML::load(File.open(".capistrano_history.yml")) if File.exist?(".capistrano_history.yml")
|
21
|
+
end
|
22
|
+
|
23
|
+
# Write history file to prevent too much typing the next time :-)
|
24
|
+
def save_history
|
25
|
+
File.open(".capistrano_history.yml", 'w') do |f|
|
26
|
+
f.write(@capistrano_history.to_yaml)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
@capistrano_history ||= {}
|
18
|
+
|
19
|
+
# main details
|
20
|
+
servername = "iqvoc.innoq.com"
|
21
|
+
role :web, servername
|
22
|
+
role :app, servername
|
23
|
+
role :db, servername, :primary => true
|
24
|
+
|
25
|
+
username = Capistrano::CLI.ui.ask("Please enter a ssh username for #{servername} [#{@capistrano_history['last_user']}]: ")
|
26
|
+
username = @capistrano_history['last_user'] if username == ""
|
27
|
+
@capistrano_history['last_user'] = username
|
28
|
+
|
29
|
+
# server details
|
30
|
+
default_run_options[:pty] = true
|
31
|
+
ssh_options[:forward_agent] = true
|
32
|
+
set :deploy_to, "/var/www/iqvoc"
|
33
|
+
set :deploy_via, :remote_cache
|
34
|
+
set :user, username
|
35
|
+
set :use_sudo, false
|
36
|
+
|
37
|
+
save_history if defined?(save_history)
|
data/config/deploy.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "#{File.dirname(__FILE__)}/deploy/history"
|
18
|
+
load_history
|
19
|
+
|
20
|
+
load "#{File.dirname(__FILE__)}/deploy/common.rb"
|
21
|
+
|
22
|
+
set :default_stage, "innoq"
|
23
|
+
set :stages, %w(ec2 innoq)
|
24
|
+
require 'capistrano/ext/multistage'
|
25
|
+
|
26
|
+
# RVM bootstrap
|
27
|
+
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
|
28
|
+
require 'rvm/capistrano'
|
29
|
+
set :rvm_ruby_string, '1.9.2'
|
30
|
+
# set :rvm_type, :user
|
31
|
+
|
32
|
+
# bundler bootstrap
|
33
|
+
require 'bundler/capistrano'
|
34
|
+
|
35
|
+
# main details
|
36
|
+
set :application, "iqvoc"
|
37
|
+
|
38
|
+
# repo details
|
39
|
+
set :scm, :git
|
40
|
+
set :git_enable_submodules, 1
|
41
|
+
# set :scm_username, "passenger"
|
42
|
+
set :repository, "git@github.com:innoq/iqvoc.git"
|
43
|
+
@capistrano_history['last_branch'] = "master" if @capistrano_history['last_branch'].nil? || @capistrano_history['last_branch'] == ""
|
44
|
+
set :branch, Capistrano::CLI.ui.ask("Please enter the branch or tag we should use [#{@capistrano_history['last_branch']}]: ")
|
45
|
+
set :branch, @capistrano_history['last_branch'] if fetch(:branch) == ""
|
46
|
+
@capistrano_history['last_branch'] = fetch(:branch)
|
47
|
+
|
48
|
+
save_history
|
49
|
+
|
50
|
+
# tasks
|
51
|
+
namespace :deploy do
|
52
|
+
task :start, :roles => :app do
|
53
|
+
run "touch #{current_path}/tmp/restart.txt"
|
54
|
+
end
|
55
|
+
|
56
|
+
task :stop, :roles => :app do
|
57
|
+
# Do nothing.
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "Restart Application"
|
61
|
+
task :restart, :roles => :app do
|
62
|
+
run "touch #{current_path}/tmp/restart.txt"
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "Symlink shared resources on each release"
|
66
|
+
task :symlink_shared, :roles => :app do
|
67
|
+
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
|
68
|
+
run "ln -nfs #{shared_path}/config/initializers/secret_token.rb #{release_path}/config/initializers/secret_token.rb"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
after 'deploy:update_code', 'deploy:symlink_shared'
|
data/config/engine.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
# An engine doesn't require it's own dependencies automatically. We also don't
|
4
|
+
# want the applications to have to do that.
|
5
|
+
require 'cancan'
|
6
|
+
require 'authlogic'
|
7
|
+
require 'kaminari'
|
8
|
+
require 'iq_rdf'
|
9
|
+
require 'json'
|
10
|
+
|
11
|
+
module Iqvoc
|
12
|
+
|
13
|
+
class Engine < Rails::Engine
|
14
|
+
|
15
|
+
paths.lib.tasks << "lib/engine_tasks"
|
16
|
+
|
17
|
+
# This will be defined in Rails 3.1 (as well as all the tasks in lib/engine_tasks)
|
18
|
+
def self.load_seed
|
19
|
+
seed_file = Iqvoc::Engine.find_root_with_flag("db").join('db/seeds.rb')
|
20
|
+
load(seed_file) if File.exist?(seed_file)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|