mail_engine 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardoc/checksums +17 -0
- data/.yardoc/objects/ActionMailer/Base/collect_responses_and_parts_order_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base/mail_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base/origin_mail_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base/set_layout_and_partials_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Base.dat +0 -0
- data/.yardoc/objects/ActionMailer/Collector/custom_i.dat +0 -0
- data/.yardoc/objects/ActionMailer/Collector.dat +0 -0
- data/.yardoc/objects/ActionMailer.dat +0 -0
- data/.yardoc/objects/MailEngine/ActsAsMailReceiver/ClassMethods/acts_as_mail_receiver_i.dat +0 -0
- data/.yardoc/objects/MailEngine/ActsAsMailReceiver/ClassMethods.dat +0 -0
- data/.yardoc/objects/MailEngine/ActsAsMailReceiver.dat +0 -0
- data/.yardoc/objects/MailEngine/Base/_40_40configurations.dat +0 -0
- data/.yardoc/objects/MailEngine/Base/current_config_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Base/send_mail_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Base.dat +0 -0
- data/.yardoc/objects/MailEngine/Configuration/load_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Configuration.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateConfig/create_config_file_i.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateConfig.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateMigration/create_migrations_i.dat +0 -0
- data/.yardoc/objects/MailEngine/CreateMigration.dat +0 -0
- data/.yardoc/objects/MailEngine/Engine.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/check_21_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/process_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/replace_resource_filename_in_html_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/replace_resource_url_in_html_c.dat +0 -0
- data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer.dat +0 -0
- data/.yardoc/objects/MailEngine/MailLogSubscriber/deliver_i.dat +0 -0
- data/.yardoc/objects/MailEngine/MailLogSubscriber.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base/ClassMethods/sendgrid_header_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base/ClassMethods.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base/InstanceMethods.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/Base.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/data_3D_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/data_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/initialize_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting/validate_config_21_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/FilterSetting.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/blocks_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/bounces_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/invalidemails_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/spamreports_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi/stats_c.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApi.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/RestApiError.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/add_sub_val_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/add_to_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/category_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/filters_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/initialize_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/set_unique_args_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_hash_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_json_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi/to_s_i.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid/SmtpApi.dat +0 -0
- data/.yardoc/objects/MailEngine/Sendgrid.dat +0 -0
- data/.yardoc/objects/MailEngine/VERSION.dat +0 -0
- data/.yardoc/objects/MailEngine/ZipProcessor/extract_all_files_c.dat +0 -0
- data/.yardoc/objects/MailEngine/ZipProcessor.dat +0 -0
- data/.yardoc/objects/MailEngine.dat +0 -0
- data/.yardoc/objects/PLACEHOLDERS_IN_LAYOUT.dat +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/Gemfile +36 -0
- data/Gemfile.lock +159 -0
- data/MIT-LICENSE +20 -0
- data/README.mkd +152 -0
- data/Rakefile +57 -0
- data/VERSION +1 -0
- data/app/controllers/mail_engine/application_controller.rb +7 -0
- data/app/controllers/mail_engine/dashboard_controller.rb +9 -0
- data/app/controllers/mail_engine/mail_logs_controller.rb +20 -0
- data/app/controllers/mail_engine/mail_schedules_controller.rb +56 -0
- data/app/controllers/mail_engine/mail_template_files_controller.rb +46 -0
- data/app/controllers/mail_engine/mail_templates_controller.rb +141 -0
- data/app/controllers/mail_engine/reports_controller.rb +34 -0
- data/app/helpers/mail_engine/mail_engine_helper.rb +30 -0
- data/app/mailers/mail_engine/mail_dispatcher.rb +59 -0
- data/app/models/mail_engine/mail_log.rb +36 -0
- data/app/models/mail_engine/mail_schedule.rb +70 -0
- data/app/models/mail_engine/mail_template.rb +270 -0
- data/app/models/mail_engine/mail_template_file.rb +31 -0
- data/app/models/mail_engine/template_partial.rb +9 -0
- data/app/uploaders/mail_engine/template_file_uploader.rb +47 -0
- data/app/uploaders/mail_engine/zip_file_uploader.rb +47 -0
- data/app/views/layouts/mail_engine/mail_engine.html.erb +112 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/header_and_footer.html.erb +10 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/header_and_footer.text.erb +3 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/none.html.erb +8 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/none.text.erb +1 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/only_footer.html.erb +9 -0
- data/app/views/layouts/mail_engine/mail_template_layouts/only_footer.text.erb +2 -0
- data/app/views/mail_engine/dashboard/index.html.erb +64 -0
- data/app/views/mail_engine/mail_logs/index.html.erb +34 -0
- data/app/views/mail_engine/mail_logs/show.html.erb +38 -0
- data/app/views/mail_engine/mail_schedules/_form.html.erb +45 -0
- data/app/views/mail_engine/mail_schedules/edit.html.erb +16 -0
- data/app/views/mail_engine/mail_schedules/index.html.erb +50 -0
- data/app/views/mail_engine/mail_schedules/new.html.erb +13 -0
- data/app/views/mail_engine/mail_schedules/show.html.erb +44 -0
- data/app/views/mail_engine/mail_template_files/_form.html.erb +28 -0
- data/app/views/mail_engine/mail_template_files/edit.html.erb +9 -0
- data/app/views/mail_engine/mail_template_files/new.html.erb +9 -0
- data/app/views/mail_engine/mail_templates/_form.html.erb +97 -0
- data/app/views/mail_engine/mail_templates/_layout_selector.html.erb +50 -0
- data/app/views/mail_engine/mail_templates/duplicate.html.erb +41 -0
- data/app/views/mail_engine/mail_templates/edit.html.erb +16 -0
- data/app/views/mail_engine/mail_templates/index.html.erb +69 -0
- data/app/views/mail_engine/mail_templates/new.html.erb +12 -0
- data/app/views/mail_engine/mail_templates/new_by_upload.html.erb +63 -0
- data/app/views/mail_engine/mail_templates/partial_options.html.erb +28 -0
- data/app/views/mail_engine/mail_templates/preview.html.erb +1 -0
- data/app/views/mail_engine/mail_templates/preview.text.erb +1 -0
- data/app/views/mail_engine/mail_templates/show.html.erb +64 -0
- data/app/views/mail_engine/reports/charts/blocks.html.erb +21 -0
- data/app/views/mail_engine/reports/charts/bounces.html.erb +21 -0
- data/app/views/mail_engine/reports/charts/invalidemails.html.erb +19 -0
- data/app/views/mail_engine/reports/charts/spamreports.html.erb +17 -0
- data/app/views/mail_engine/reports/index.html.erb +67 -0
- data/config/routes.rb +48 -0
- data/db/migrate/20110114030841_create_table_mail_template.rb +22 -0
- data/db/migrate/20110126030525_create_mail_schedules.rb +21 -0
- data/db/migrate/20110204114145_create_template_partials.rb +13 -0
- data/db/migrate/20110206025002_create_mail_logs.rb +17 -0
- data/db/migrate/20110217062316_create_mail_template_files.rb +14 -0
- data/doc/_index.html +322 -0
- data/doc/class_list.html +36 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +310 -0
- data/doc/file_list.html +38 -0
- data/doc/frames.html +13 -0
- data/doc/js/app.js +203 -0
- data/doc/js/full_list.js +149 -0
- data/doc/js/jquery.js +154 -0
- data/doc/method_list.html +283 -0
- data/lib/mail_engine/action_mailer_patch.rb +104 -0
- data/lib/mail_engine/acts_as_mail_receiver.rb +22 -0
- data/lib/mail_engine/base.rb +26 -0
- data/lib/mail_engine/configuration.rb +11 -0
- data/lib/mail_engine/engine.rb +42 -0
- data/lib/mail_engine/generators/create_config.rb +20 -0
- data/lib/mail_engine/generators/create_migration.rb +20 -0
- data/lib/mail_engine/generators/templates/mail_engine_config.yml +14 -0
- data/lib/mail_engine/html_document_assets_replacer.rb +86 -0
- data/lib/mail_engine/mail_log_subscriber.rb +30 -0
- data/lib/mail_engine/placeholders_in_layout.rb +5 -0
- data/lib/mail_engine/sendgrid/base.rb +45 -0
- data/lib/mail_engine/sendgrid/rest_api.rb +85 -0
- data/lib/mail_engine/sendgrid/smtp_api.rb +85 -0
- data/lib/mail_engine/sendgrid.rb +9 -0
- data/lib/mail_engine/tasks/sendmail.rake +8 -0
- data/lib/mail_engine/version.rb +3 -0
- data/lib/mail_engine/zip_processor.rb +51 -0
- data/lib/mail_engine.rb +17 -0
- data/mail_engine.gemspec +422 -0
- data/screenshots/bounce_report.png +0 -0
- data/screenshots/dashboard.png +0 -0
- data/screenshots/editing_mail_template.png +0 -0
- data/screenshots/logs.png +0 -0
- data/screenshots/new_by_upload.png +0 -0
- data/screenshots/reports.png +0 -0
- data/screenshots/schedule.png +0 -0
- data/screenshots/select_layout_partial.png +0 -0
- data/screenshots/templates.png +0 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/controllers/application_controller.rb +11 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/user_mailer.rb +36 -0
- data/test/dummy/app/models/user.rb +10 -0
- data/test/dummy/config/application.rb +52 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +52 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +47 -0
- data/test/dummy/config/environments/production.rb +49 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/locales/zh.yml +2 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/migrate/20110114030841_create_table_mail_template.rb +22 -0
- data/test/dummy/db/migrate/20110125094530_create_users.rb +16 -0
- data/test/dummy/db/migrate/20110126030525_create_mail_schedules.rb +21 -0
- data/test/dummy/db/migrate/20110204114145_create_template_partials.rb +13 -0
- data/test/dummy/db/migrate/20110206025002_create_mail_logs.rb +17 -0
- data/test/dummy/db/migrate/20110217062316_create_mail_template_files.rb +14 -0
- data/test/dummy/db/schema.rb +78 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/images/mail_engine/header_and_footer_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/logo.gif +0 -0
- data/test/dummy/public/images/mail_engine/logo.png +0 -0
- data/test/dummy/public/images/mail_engine/none_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/only_footer_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/unselect_header_and_footer_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/unselect_none_layout.png +0 -0
- data/test/dummy/public/images/mail_engine/unselect_only_footer_layout.png +0 -0
- data/test/dummy/public/javascripts/jquery.iframe-auto-height.plugin.js +50 -0
- data/test/dummy/public/javascripts/jquery.js +16 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/ajaxLoader.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/close.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/next.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/img/prev.gif +0 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal-ie6.js +186 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal-ie6.min.js +9 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal.custom.js +1599 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/js/jquery.nyroModal.custom.min.js +34 -0
- data/test/dummy/public/javascripts/jquery.nyroModal/styles/nyroModal.css +102 -0
- data/test/dummy/public/javascripts/jquery.string.js +425 -0
- data/test/dummy/public/javascripts/mail_engine_application.js +2 -0
- data/test/dummy/public/javascripts/markitup/jquery.markitup.js +564 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/bold.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/css.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/italic.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/picture.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/stroke.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/tag.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_center.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_justify.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_left.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_align_right.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_indent.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_letterspacing.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_linespacing.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_lowercase.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_bottom.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_left.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_right.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_padding_top.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/images/text_uppercase.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/css/readme.txt +28 -0
- data/test/dummy/public/javascripts/markitup/sets/css/set.js +52 -0
- data/test/dummy/public/javascripts/markitup/sets/css/style.css +72 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/bold.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/clean.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/image.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/italic.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/link.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/picture.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/preview.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/images/stroke.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/default/set.js +27 -0
- data/test/dummy/public/javascripts/markitup/sets/default/style.css +27 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/bold.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/clean.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h1.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h2.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h3.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h4.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h5.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/h6.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/image.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/italic.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/link.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/list-bullet.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/list-item.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/list-numeric.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/paragraph.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/picture.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/preview.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/images/stroke.png +0 -0
- data/test/dummy/public/javascripts/markitup/sets/html/readme.txt +11 -0
- data/test/dummy/public/javascripts/markitup/sets/html/set.js +40 -0
- data/test/dummy/public/javascripts/markitup/sets/html/style.css +59 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-container.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-bbcode.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-dotclear.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-html.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-json.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-markdown.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-textile.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-wiki.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor-xml.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/bg-editor.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/handle.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/menu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/images/submenu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/markitup/style.css +147 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/images/handle.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/images/menu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/images/submenu.png +0 -0
- data/test/dummy/public/javascripts/markitup/skins/simple/style.css +118 -0
- data/test/dummy/public/javascripts/markitup/templates/preview.css +5 -0
- data/test/dummy/public/javascripts/markitup/templates/preview.html +11 -0
- data/test/dummy/public/javascripts/rails.js +132 -0
- data/test/dummy/public/stylesheets/.gitkeep +0 -0
- data/test/dummy/public/stylesheets/application.css +0 -0
- data/test/dummy/public/stylesheets/style.css +681 -0
- data/test/dummy/script/rails +6 -0
- data/test/factories.rb +88 -0
- data/test/fixtures/files/compress_by_dir.zip +0 -0
- data/test/fixtures/files/compress_by_file.zip +0 -0
- data/test/fixtures/files/image.png +0 -0
- data/test/functional/mail_engine/mail_dispatcher_test.rb +8 -0
- data/test/functional/mail_engine/mail_schedules_controller_controller_test.rb +8 -0
- data/test/functional/mail_engine/mail_templates_controller_controller_test.rb +8 -0
- data/test/support/integration_case.rb +5 -0
- data/test/test_helper.rb +35 -0
- data/test/unit/mail_engine/mail_log_test.rb +8 -0
- data/test/unit/mail_engine/mail_schedule_test.rb +40 -0
- data/test/unit/mail_engine/mail_template_file_test.rb +21 -0
- data/test/unit/mail_engine/mail_template_test.rb +77 -0
- data/test/unit/mail_engine/template_partial_test.rb +8 -0
- metadata +597 -0
data/.yardoc/checksums
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
lib/mail_engine/generators/create_migration.rb 668a6289313667bb5bd3a4e3bf9a9109fbd8da79
|
2
|
+
lib/mail_engine/sendgrid.rb 9ddb5014301ea6c90f51c53a8f491b81d4fe2e13
|
3
|
+
lib/mail_engine/version.rb ef61db17982e6fe17b507089a3bc407c2c511669
|
4
|
+
lib/mail_engine/base.rb b973fb0c7c6219333f3cd957d62a71ffb021d8fa
|
5
|
+
lib/mail_engine/engine.rb 0708eca7318ec379a9a1e1f8a589e9d8d6c7bc46
|
6
|
+
lib/mail_engine/action_mailer_patch.rb 243bfccaeb9cd7e5f9fa75894f2260f73be6698d
|
7
|
+
lib/mail_engine/generators/create_config.rb 05cbb67778c9094bf60469ccf32401360d599265
|
8
|
+
lib/mail_engine/sendgrid/rest_api.rb 7245e928594306c21d9cbf6f8173d06f0f430e7a
|
9
|
+
lib/mail_engine/sendgrid/base.rb 3b5a99c4157a654de4f0888a2b8185c80b4e49f7
|
10
|
+
lib/mail_engine/configuration.rb bbe48fd2a4c121b95717c97a79dc8cfe7f1f07e0
|
11
|
+
lib/mail_engine/zip_processor.rb 042c1ea78c968b0043cebc21de0c2ed0b66635b2
|
12
|
+
lib/mail_engine/mail_log_subscriber.rb a2962e2a22b022d364fcf190ee88f20315be5739
|
13
|
+
lib/mail_engine/html_document_assets_replacer.rb 4017f6533368b7cec110cc630d7c5235e0d46ebe
|
14
|
+
lib/mail_engine/acts_as_mail_receiver.rb a675dbc5dbdb6701bb60753a19033b272a832237
|
15
|
+
lib/mail_engine/sendgrid/smtp_api.rb 36e3486fd4df48866b94f8865ade269295a4cabb
|
16
|
+
lib/mail_engine/placeholders_in_layout.rb 5047c9952ab86bf201a523a2cf1db3f442f2531c
|
17
|
+
lib/mail_engine.rb 32b4284d58e00764358d9005828dcae9bb9c2647
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/.yardoc/objects/MailEngine/HtmlDocumentAssetsReplacer/replace_resource_filename_in_html_c.dat
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/.yardoc/proxy_types
ADDED
Binary file
|
data/Gemfile
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "rails", "3.0.3"
|
4
|
+
gem 'mysql'
|
5
|
+
gem "liquid", :git => "git://github.com/hlxwell/liquid.git"
|
6
|
+
gem "httparty"
|
7
|
+
gem 'will_paginate', '~> 3.0.pre2'
|
8
|
+
gem "carrierwave"
|
9
|
+
gem 'nokogiri'
|
10
|
+
gem 'deep_cloneable'
|
11
|
+
|
12
|
+
# gem "sqlite3-ruby", :require => "sqlite3"
|
13
|
+
# gem "mustache"
|
14
|
+
|
15
|
+
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
|
16
|
+
# gem 'ruby-debug'
|
17
|
+
# gem 'ruby-debug19'
|
18
|
+
|
19
|
+
group :development do
|
20
|
+
gem "yard"
|
21
|
+
gem "bundler"
|
22
|
+
gem "jeweler"
|
23
|
+
gem "rcov"
|
24
|
+
gem "reek"
|
25
|
+
end
|
26
|
+
|
27
|
+
group :test do
|
28
|
+
gem 'timecop'
|
29
|
+
gem "capybara", ">= 0.4.0"
|
30
|
+
gem "mocha", :require => "mocha"
|
31
|
+
gem "fakeweb"
|
32
|
+
gem "factory_girl", :require => 'factory_girl', :git => "git://github.com/thoughtbot/factory_girl.git"
|
33
|
+
gem "shoulda", :require => 'shoulda'
|
34
|
+
gem 'test_benchmarker'
|
35
|
+
gem "rack-test", :require => "rack/test"
|
36
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/hlxwell/liquid.git
|
3
|
+
revision: d70ed7582215507a579fee8b5e5b3269600f3fb3
|
4
|
+
specs:
|
5
|
+
liquid (2.2.2)
|
6
|
+
|
7
|
+
GIT
|
8
|
+
remote: git://github.com/thoughtbot/factory_girl.git
|
9
|
+
revision: a7f7e85187e9178f4da2db1b87fa38aec6a96178
|
10
|
+
specs:
|
11
|
+
factory_girl (2.0.0.beta1)
|
12
|
+
|
13
|
+
GEM
|
14
|
+
remote: http://rubygems.org/
|
15
|
+
specs:
|
16
|
+
abstract (1.0.0)
|
17
|
+
actionmailer (3.0.3)
|
18
|
+
actionpack (= 3.0.3)
|
19
|
+
mail (~> 2.2.9)
|
20
|
+
actionpack (3.0.3)
|
21
|
+
activemodel (= 3.0.3)
|
22
|
+
activesupport (= 3.0.3)
|
23
|
+
builder (~> 2.1.2)
|
24
|
+
erubis (~> 2.6.6)
|
25
|
+
i18n (~> 0.4)
|
26
|
+
rack (~> 1.2.1)
|
27
|
+
rack-mount (~> 0.6.13)
|
28
|
+
rack-test (~> 0.5.6)
|
29
|
+
tzinfo (~> 0.3.23)
|
30
|
+
activemodel (3.0.3)
|
31
|
+
activesupport (= 3.0.3)
|
32
|
+
builder (~> 2.1.2)
|
33
|
+
i18n (~> 0.4)
|
34
|
+
activerecord (3.0.3)
|
35
|
+
activemodel (= 3.0.3)
|
36
|
+
activesupport (= 3.0.3)
|
37
|
+
arel (~> 2.0.2)
|
38
|
+
tzinfo (~> 0.3.23)
|
39
|
+
activeresource (3.0.3)
|
40
|
+
activemodel (= 3.0.3)
|
41
|
+
activesupport (= 3.0.3)
|
42
|
+
activesupport (3.0.3)
|
43
|
+
arel (2.0.4)
|
44
|
+
builder (2.1.2)
|
45
|
+
capybara (0.4.0)
|
46
|
+
celerity (>= 0.7.9)
|
47
|
+
culerity (>= 0.2.4)
|
48
|
+
mime-types (>= 1.16)
|
49
|
+
nokogiri (>= 1.3.3)
|
50
|
+
rack (>= 1.0.0)
|
51
|
+
rack-test (>= 0.5.4)
|
52
|
+
selenium-webdriver (>= 0.0.27)
|
53
|
+
xpath (~> 0.1.2)
|
54
|
+
carrierwave (0.5.1)
|
55
|
+
activesupport (~> 3.0)
|
56
|
+
celerity (0.8.4)
|
57
|
+
childprocess (0.1.4)
|
58
|
+
ffi (~> 0.6.3)
|
59
|
+
crack (0.1.8)
|
60
|
+
culerity (0.2.12)
|
61
|
+
deep_cloneable (1.2.1)
|
62
|
+
erubis (2.6.6)
|
63
|
+
abstract (>= 1.0.0)
|
64
|
+
fakeweb (1.3.0)
|
65
|
+
ffi (0.6.3)
|
66
|
+
rake (>= 0.8.7)
|
67
|
+
git (1.2.5)
|
68
|
+
httparty (0.6.1)
|
69
|
+
crack (= 0.1.8)
|
70
|
+
i18n (0.4.2)
|
71
|
+
jeweler (1.5.2)
|
72
|
+
bundler (~> 1.0.0)
|
73
|
+
git (>= 1.2.5)
|
74
|
+
rake
|
75
|
+
json_pure (1.4.6)
|
76
|
+
mail (2.2.14)
|
77
|
+
activesupport (>= 2.3.6)
|
78
|
+
i18n (>= 0.4.0)
|
79
|
+
mime-types (~> 1.16)
|
80
|
+
treetop (~> 1.4.8)
|
81
|
+
mime-types (1.16)
|
82
|
+
mocha (0.9.10)
|
83
|
+
rake
|
84
|
+
mysql (2.8.1)
|
85
|
+
nokogiri (1.4.4)
|
86
|
+
polyglot (0.3.1)
|
87
|
+
rack (1.2.1)
|
88
|
+
rack-mount (0.6.13)
|
89
|
+
rack (>= 1.0.0)
|
90
|
+
rack-test (0.5.7)
|
91
|
+
rack (>= 1.0)
|
92
|
+
rails (3.0.3)
|
93
|
+
actionmailer (= 3.0.3)
|
94
|
+
actionpack (= 3.0.3)
|
95
|
+
activerecord (= 3.0.3)
|
96
|
+
activeresource (= 3.0.3)
|
97
|
+
activesupport (= 3.0.3)
|
98
|
+
bundler (~> 1.0)
|
99
|
+
railties (= 3.0.3)
|
100
|
+
railties (3.0.3)
|
101
|
+
actionpack (= 3.0.3)
|
102
|
+
activesupport (= 3.0.3)
|
103
|
+
rake (>= 0.8.7)
|
104
|
+
thor (~> 0.14.4)
|
105
|
+
rake (0.8.7)
|
106
|
+
rcov (0.9.9)
|
107
|
+
reek (1.2.8)
|
108
|
+
ruby2ruby (~> 1.2)
|
109
|
+
ruby_parser (~> 2.0)
|
110
|
+
sexp_processor (~> 3.0)
|
111
|
+
ruby2ruby (1.2.5)
|
112
|
+
ruby_parser (~> 2.0)
|
113
|
+
sexp_processor (~> 3.0)
|
114
|
+
ruby_parser (2.0.6)
|
115
|
+
sexp_processor (~> 3.0)
|
116
|
+
rubyzip (0.9.4)
|
117
|
+
selenium-webdriver (0.1.0)
|
118
|
+
childprocess (= 0.1.4)
|
119
|
+
ffi (~> 0.6.3)
|
120
|
+
json_pure
|
121
|
+
rubyzip
|
122
|
+
sexp_processor (3.0.5)
|
123
|
+
shoulda (2.11.3)
|
124
|
+
test_benchmarker (1.2.1)
|
125
|
+
thor (0.14.6)
|
126
|
+
timecop (0.3.5)
|
127
|
+
treetop (1.4.9)
|
128
|
+
polyglot (>= 0.3.1)
|
129
|
+
tzinfo (0.3.23)
|
130
|
+
will_paginate (3.0.pre2)
|
131
|
+
xpath (0.1.2)
|
132
|
+
nokogiri (~> 1.3)
|
133
|
+
yard (0.6.4)
|
134
|
+
|
135
|
+
PLATFORMS
|
136
|
+
ruby
|
137
|
+
|
138
|
+
DEPENDENCIES
|
139
|
+
bundler
|
140
|
+
capybara (>= 0.4.0)
|
141
|
+
carrierwave
|
142
|
+
deep_cloneable
|
143
|
+
factory_girl!
|
144
|
+
fakeweb
|
145
|
+
httparty
|
146
|
+
jeweler
|
147
|
+
liquid!
|
148
|
+
mocha
|
149
|
+
mysql
|
150
|
+
nokogiri
|
151
|
+
rack-test
|
152
|
+
rails (= 3.0.3)
|
153
|
+
rcov
|
154
|
+
reek
|
155
|
+
shoulda
|
156
|
+
test_benchmarker
|
157
|
+
timecop
|
158
|
+
will_paginate (~> 3.0.pre2)
|
159
|
+
yard
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2011 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.mkd
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
Why Mail Engine
|
2
|
+
===============
|
3
|
+
1. Don't need to export and import your system data to any other mail systems(like mailchimp, mad_mimi).
|
4
|
+
2. Allow user to edit all email templates directly in system admin, save the time of developer to participate in.
|
5
|
+
3. Allow user to add mail sending schedule directly in system admin, don't need developer to add
|
6
|
+
them into code or deploy crontab at server each time when client have new request.
|
7
|
+
4. Fully take advantage of the convenience of loading any system data to mail template. In the past,
|
8
|
+
like using mailchimp, you have to store everything into user list, then you are able to load that into
|
9
|
+
mail template, it increased the complexity of maintaining information in another system.
|
10
|
+
5. If you want to trace your mail, like open rate, click rate and unsubscribe rate, we provide Sendgrid
|
11
|
+
integration configuration to take advantage that system. (More information at http://sendgrid.com)
|
12
|
+
6. Allow logging all sent mails, you can check which mail been sent to which user.
|
13
|
+
7. You can know send the email to the active users, so that you don't need to waste your credits of sendgrid or amazon.
|
14
|
+
|
15
|
+
Problem when using third part mail system
|
16
|
+
=========================================
|
17
|
+
We are using mailchimp mostly for the newsletter solution, but it's has many problems that we have to make a new mail engine
|
18
|
+
to fit our needs in real project:
|
19
|
+
|
20
|
+
1. It is only one newsletter or marketing mail solution, so for system mail, it can do nothing, so for system mail we still go the original way (put them in the rails project.)
|
21
|
+
2. Mailchimp don't support other encode for mail, when sending japanese or chinese mail it will be failed.
|
22
|
+
3. It doesn't support localization, so different language is different campaign, you need to set a lot config for each of them.
|
23
|
+
4. Manage user list is awkward, it even can't create list by API, so you have to create list one by one by hand.
|
24
|
+
5. It can't load other user personal or customized data from system into mail, like latest unchecked news or messages, it's very limited to load info from user list record.
|
25
|
+
6. It doesn't support reusable partials, which like you hope to put a fixed content of footer or header.
|
26
|
+
7. It doesn't support recurring mail sending.
|
27
|
+
|
28
|
+
Installation
|
29
|
+
============
|
30
|
+
** Step 1: **
|
31
|
+
|
32
|
+
gem install mail_engine
|
33
|
+
|
34
|
+
** Step 2: **
|
35
|
+
|
36
|
+
Add below line to the crontab list of your sever:
|
37
|
+
|
38
|
+
### check mail schedule for every 15 minutes ###
|
39
|
+
*/4 * * * * sh -c "cd /path/to/your/system && rake mail_engine:sendmail RAILS_ENV=production"
|
40
|
+
|
41
|
+
|
42
|
+
Usage
|
43
|
+
=====
|
44
|
+
** For System Mail: **
|
45
|
+
|
46
|
+
Due to the sender of system mail is ActionMailer, so you just need to set template physical store path (e.g. user_mailer/notify)
|
47
|
+
as the mailer template load path, system will load it from database. (Notice, database template will
|
48
|
+
override your file template.)
|
49
|
+
|
50
|
+
Mail Engine use Liquid template engine, so you can read the Liquid Reference at http://www.liquidmarkup.org/
|
51
|
+
|
52
|
+
Steps:
|
53
|
+
|
54
|
+
1. Just create a template in mail engine.
|
55
|
+
|
56
|
+
** For Marketing Mail: **
|
57
|
+
|
58
|
+
For normal marketing mails are quite simple in logic, so don't need logic code in the mail template.
|
59
|
+
So we provide a mail dispatcher which allows user can send marketing mail only by providing the template and
|
60
|
+
select the data pre-defined in system to the mail template, don't need developer to do anything like adding mailer file.
|
61
|
+
|
62
|
+
Steps:
|
63
|
+
|
64
|
+
1. Create a mail tempate in mail engine.
|
65
|
+
2. Create a sending schedule record. (You can specify the users to receive this mail, total sending count,
|
66
|
+
sending period, when start to deliver the first mail and load which data into this template, You also can set
|
67
|
+
condition for the scheduler, like if no specified data in collection, don't send the mail.)
|
68
|
+
|
69
|
+
You also can send mail in your program by using:
|
70
|
+
MailEngine::MailDispatcher.{your marketing mail template name}(:to => "Michael he <hlxwell@gmail.com>", :values => {:username => "Michael He"}).deliver
|
71
|
+
|
72
|
+
Screenshots
|
73
|
+
===========
|
74
|
+
|
75
|
+
Dashboard
|
76
|
+
---------
|
77
|
+
Shows the latest report.
|
78
|
+
|
79
|
+
![Dashboard](https://github.com/hlxwell/mail-engine/raw/master/screenshots/dashboard.png "Dashboard")
|
80
|
+
|
81
|
+
|
82
|
+
Template Management
|
83
|
+
-------------------
|
84
|
+
You can manage the template used in your system, including:
|
85
|
+
|
86
|
+
1. System mail, has it's own action mailer file.
|
87
|
+
2. Marketing mail, simple logic and without it's own action mailer.
|
88
|
+
3. Partials, you can reused it in any other templates.
|
89
|
+
|
90
|
+
![Template Management](https://github.com/hlxwell/mail-engine/raw/master/screenshots/templates.png "Template Management")
|
91
|
+
|
92
|
+
|
93
|
+
Template editing Page
|
94
|
+
---------------------
|
95
|
+
You can see here are many details you can change:
|
96
|
+
|
97
|
+
1. Template Path, system action mailer can find it when lookup mail template.
|
98
|
+
2. Locale
|
99
|
+
3. Format
|
100
|
+
4. Layout
|
101
|
+
5. Files will used in the template.
|
102
|
+
6. Zip File when you used at creating this template.
|
103
|
+
7. Preview template in time.
|
104
|
+
|
105
|
+
![Template editing Preview](https://github.com/hlxwell/mail-engine/raw/master/screenshots/editing_mail_template.png "Template editing Preview")
|
106
|
+
|
107
|
+
|
108
|
+
Upload html template with image in a zip file
|
109
|
+
---------------------------------------------
|
110
|
+
You can create a template by uplaoding a zip file including one html and other images or css files.
|
111
|
+
|
112
|
+
![Upload html template with image in a zip file.")](https://github.com/hlxwell/mail-engine/raw/master/screenshots/new_by_upload.png "Upload html template with image in a zip file.")
|
113
|
+
|
114
|
+
|
115
|
+
Partial and Layout selection
|
116
|
+
----------------------------
|
117
|
+
![Partial and Layout selection](https://github.com/hlxwell/mail-engine/raw/master/screenshots/select_layout_partial.png "Partial and Layout selection")
|
118
|
+
|
119
|
+
|
120
|
+
Mail Schedule
|
121
|
+
-------------
|
122
|
+
You can set a mail sending schedule, here are some useful setting items:
|
123
|
+
|
124
|
+
1. Marketing Mail Template.
|
125
|
+
2. User Group will be received this mail.
|
126
|
+
3. Total send count.
|
127
|
+
4. Already send count.
|
128
|
+
5. Sending Period.
|
129
|
+
6. Payloads which load from user model and send to template when sending.
|
130
|
+
7. First send date time, this date will indicate when this mail will be send first time, and according to the seding period it will resend at the same time after one period.
|
131
|
+
8. You can set requirements, which been predefined in the system, let the mail not been sent if the requirements is unreached.
|
132
|
+
|
133
|
+
![Mail Schedule](https://github.com/hlxwell/mail-engine/raw/master/screenshots/schedule.png "Mail Schedule")
|
134
|
+
|
135
|
+
|
136
|
+
Mail Logs
|
137
|
+
---------
|
138
|
+
It will log all mails' content been sent, you can turn it off in config file.
|
139
|
+
|
140
|
+
![Mail Logs](https://github.com/hlxwell/mail-engine/raw/master/screenshots/logs.png "Mail Logs")
|
141
|
+
|
142
|
+
|
143
|
+
Report
|
144
|
+
------
|
145
|
+
Shows detail chart and data list of mail sending stats.
|
146
|
+
|
147
|
+
![Report](https://github.com/hlxwell/mail-engine/raw/master/screenshots/reports.png "Report")
|
148
|
+
|
149
|
+
|
150
|
+
Bounce Report
|
151
|
+
-------------
|
152
|
+
![Bounce Report](https://github.com/hlxwell/mail-engine/raw/master/screenshots/bounce_report.png "Bounce Report")
|
data/Rakefile
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'rubygems'
|
3
|
+
begin
|
4
|
+
require 'bundler/setup'
|
5
|
+
rescue LoadError
|
6
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rake'
|
10
|
+
require 'rake/rdoctask'
|
11
|
+
require 'rake/testtask'
|
12
|
+
|
13
|
+
# jeweler
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "mail_engine"
|
18
|
+
gem.homepage = "http://github.com/hlxwell/mail-engine"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{Mail Management Solution}
|
21
|
+
gem.description = %Q{Rails system mail management solution.}
|
22
|
+
gem.email = "hlxwell@gmail.com"
|
23
|
+
gem.authors = ["michael he"]
|
24
|
+
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
25
|
+
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
26
|
+
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
27
|
+
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
28
|
+
end
|
29
|
+
Jeweler::RubygemsDotOrgTasks.new
|
30
|
+
|
31
|
+
# Rcov
|
32
|
+
require 'rcov/rcovtask'
|
33
|
+
Rcov::RcovTask.new do |test|
|
34
|
+
test.libs << 'test'
|
35
|
+
test.pattern = 'test/**/test_*.rb'
|
36
|
+
test.verbose = true
|
37
|
+
end
|
38
|
+
|
39
|
+
# Reek tasks
|
40
|
+
require 'reek/rake/task'
|
41
|
+
Reek::Rake::Task.new do |t|
|
42
|
+
t.fail_on_error = true
|
43
|
+
t.verbose = false
|
44
|
+
t.source_files = 'lib/**/*.rb'
|
45
|
+
end
|
46
|
+
|
47
|
+
# test tasks
|
48
|
+
Rake::TestTask.new(:test) do |t|
|
49
|
+
t.libs << 'lib' << 'test'
|
50
|
+
t.pattern = 'test/**/*_test.rb'
|
51
|
+
t.verbose = false
|
52
|
+
end
|
53
|
+
task :default => :test
|
54
|
+
|
55
|
+
# yard tasks
|
56
|
+
require 'yard'
|
57
|
+
YARD::Rake::YardocTask.new
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class MailEngine::DashboardController < MailEngine::ApplicationController
|
2
|
+
def index
|
3
|
+
@pie_chart_columns = ["bounces", "unique_opens", "spamreports", "blocks", "unopened"]
|
4
|
+
|
5
|
+
@stats_data = MailEngine::Sendgrid::RestApi.stats(:days => 6)
|
6
|
+
@data_of_today = @stats_data.last
|
7
|
+
@data_of_today.merge!("unopened" => (@data_of_today["delivered"].to_i - @data_of_today["unique_opens"].to_i))
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class MailEngine::MailLogsController < MailEngine::ApplicationController
|
2
|
+
before_filter :find_model
|
3
|
+
|
4
|
+
def index
|
5
|
+
@mail_logs = MailLog.order("created_at desc").paginate :page => params[:page], :per_page => 20
|
6
|
+
end
|
7
|
+
|
8
|
+
def show
|
9
|
+
end
|
10
|
+
|
11
|
+
def destroy
|
12
|
+
@mail_log.destroy
|
13
|
+
redirect_to mail_logs_path
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
def find_model
|
18
|
+
@mail_log = MailLog.find(params[:id]) if params[:id].present?
|
19
|
+
end
|
20
|
+
end
|