mailhopper 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mailhopper/version.rb +1 -1
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +9 -0
- data/spec/dummy/app/assets/stylesheets/application.css +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/sample_mailer.rb +8 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/sample_mailer/hello.text.erb +1 -0
- data/spec/dummy/config/application.rb +42 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +27 -0
- data/spec/dummy/config/environments/production.rb +51 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mailhopper.rb +3 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/20110916191655_create_emails.rb +29 -0
- data/spec/dummy/db/schema.rb +29 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +87 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/models/email_spec.rb +87 -0
- data/spec/spec_helper.rb +32 -0
- metadata +81 -10
- data/lib/tasks/mailhopper_tasks.rake +0 -4
data/lib/mailhopper/version.rb
CHANGED
data/spec/dummy/Rakefile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
3
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
4
|
+
|
5
|
+
require File.expand_path('../config/application', __FILE__)
|
6
|
+
|
7
|
+
Dummy::Application.load_tasks
|
@@ -0,0 +1,9 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
+
// the compiled file.
|
6
|
+
//
|
7
|
+
//= require jquery
|
8
|
+
//= require jquery_ujs
|
9
|
+
//= require_tree .
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
+
*= require_self
|
6
|
+
*= require_tree .
|
7
|
+
*/
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= @content %>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
require 'rails/all'
|
4
|
+
|
5
|
+
Bundler.require
|
6
|
+
require "mailhopper"
|
7
|
+
|
8
|
+
module Dummy
|
9
|
+
class Application < Rails::Application
|
10
|
+
# Settings in config/environments/* take precedence over those specified here.
|
11
|
+
# Application configuration should go into files in config/initializers
|
12
|
+
# -- all .rb files in that directory are automatically loaded.
|
13
|
+
|
14
|
+
# Custom directories with classes and modules you want to be autoloadable.
|
15
|
+
# config.autoload_paths += %W(#{config.root}/extras)
|
16
|
+
|
17
|
+
# Only load the plugins named here, in the order given (default is alphabetical).
|
18
|
+
# :all can be used as a placeholder for all plugins not explicitly named.
|
19
|
+
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
20
|
+
|
21
|
+
# Activate observers that should always be running.
|
22
|
+
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
|
23
|
+
|
24
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
25
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
26
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
27
|
+
|
28
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
29
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
30
|
+
# config.i18n.default_locale = :de
|
31
|
+
|
32
|
+
# Configure the default encoding used in templates for Ruby 1.9.
|
33
|
+
config.encoding = "utf-8"
|
34
|
+
|
35
|
+
# Configure sensitive parameters which will be filtered from the log file.
|
36
|
+
config.filter_parameters += [:password]
|
37
|
+
|
38
|
+
# Enable the asset pipeline
|
39
|
+
config.assets.enabled = true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3
|
3
|
+
#
|
4
|
+
# Ensure the SQLite 3 gem is defined in your Gemfile
|
5
|
+
# gem 'sqlite3'
|
6
|
+
development:
|
7
|
+
adapter: sqlite3
|
8
|
+
database: db/development.sqlite3
|
9
|
+
pool: 5
|
10
|
+
timeout: 5000
|
11
|
+
|
12
|
+
# Warning: The database defined as "test" will be erased and
|
13
|
+
# re-generated from your development database when you run "rake".
|
14
|
+
# Do not set this db to the same as development or production.
|
15
|
+
test:
|
16
|
+
adapter: sqlite3
|
17
|
+
database: db/test.sqlite3
|
18
|
+
pool: 5
|
19
|
+
timeout: 5000
|
20
|
+
|
21
|
+
production:
|
22
|
+
adapter: sqlite3
|
23
|
+
database: db/production.sqlite3
|
24
|
+
pool: 5
|
25
|
+
timeout: 5000
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Dummy::Application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb
|
3
|
+
|
4
|
+
# In the development environment your application's code is reloaded on
|
5
|
+
# every request. This slows down response time but is perfect for development
|
6
|
+
# since you don't have to restart the web server when you make code changes.
|
7
|
+
config.cache_classes = false
|
8
|
+
|
9
|
+
# Log error messages when you accidentally call methods on nil.
|
10
|
+
config.whiny_nils = true
|
11
|
+
|
12
|
+
# Show full error reports and disable caching
|
13
|
+
config.consider_all_requests_local = true
|
14
|
+
config.action_controller.perform_caching = false
|
15
|
+
|
16
|
+
# Don't care if the mailer can't send
|
17
|
+
config.action_mailer.raise_delivery_errors = false
|
18
|
+
|
19
|
+
# Print deprecation notices to the Rails logger
|
20
|
+
config.active_support.deprecation = :log
|
21
|
+
|
22
|
+
# Only use best-standards-support built into browsers
|
23
|
+
config.action_dispatch.best_standards_support = :builtin
|
24
|
+
|
25
|
+
# Do not compress assets
|
26
|
+
config.assets.compress = false
|
27
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
Dummy::Application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb
|
3
|
+
|
4
|
+
# Code is not reloaded between requests
|
5
|
+
config.cache_classes = true
|
6
|
+
|
7
|
+
# Full error reports are disabled and caching is turned on
|
8
|
+
config.consider_all_requests_local = false
|
9
|
+
config.action_controller.perform_caching = true
|
10
|
+
|
11
|
+
# Disable Rails's static asset server (Apache or nginx will already do this)
|
12
|
+
config.serve_static_assets = false
|
13
|
+
|
14
|
+
# Compress JavaScripts and CSS
|
15
|
+
config.assets.compress = true
|
16
|
+
|
17
|
+
# Specifies the header that your server uses for sending files
|
18
|
+
# (comment out if your front-end server doesn't support this)
|
19
|
+
config.action_dispatch.x_sendfile_header = "X-Sendfile" # Use 'X-Accel-Redirect' for nginx
|
20
|
+
|
21
|
+
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
22
|
+
# config.force_ssl = true
|
23
|
+
|
24
|
+
# See everything in the log (default is :info)
|
25
|
+
# config.log_level = :debug
|
26
|
+
|
27
|
+
# Use a different logger for distributed setups
|
28
|
+
# config.logger = SyslogLogger.new
|
29
|
+
|
30
|
+
# Use a different cache store in production
|
31
|
+
# config.cache_store = :mem_cache_store
|
32
|
+
|
33
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server
|
34
|
+
# config.action_controller.asset_host = "http://assets.example.com"
|
35
|
+
|
36
|
+
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
|
37
|
+
# config.assets.precompile += %w( search.js )
|
38
|
+
|
39
|
+
# Disable delivery errors, bad email addresses will be ignored
|
40
|
+
# config.action_mailer.raise_delivery_errors = false
|
41
|
+
|
42
|
+
# Enable threaded mode
|
43
|
+
# config.threadsafe!
|
44
|
+
|
45
|
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
46
|
+
# the I18n.default_locale when a translation can not be found)
|
47
|
+
config.i18n.fallbacks = true
|
48
|
+
|
49
|
+
# Send deprecation notices to registered listeners
|
50
|
+
config.active_support.deprecation = :notify
|
51
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
Dummy::Application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb
|
3
|
+
|
4
|
+
# The test environment is used exclusively to run your application's
|
5
|
+
# test suite. You never need to work with it otherwise. Remember that
|
6
|
+
# your test database is "scratch space" for the test suite and is wiped
|
7
|
+
# and recreated between test runs. Don't rely on the data there!
|
8
|
+
config.cache_classes = true
|
9
|
+
|
10
|
+
# Configure static asset server for tests with Cache-Control for performance
|
11
|
+
config.serve_static_assets = true
|
12
|
+
config.static_cache_control = "public, max-age=3600"
|
13
|
+
|
14
|
+
# Log error messages when you accidentally call methods on nil
|
15
|
+
config.whiny_nils = true
|
16
|
+
|
17
|
+
# Show full error reports and disable caching
|
18
|
+
config.consider_all_requests_local = true
|
19
|
+
config.action_controller.perform_caching = false
|
20
|
+
|
21
|
+
# Raise exceptions instead of rendering exception templates
|
22
|
+
config.action_dispatch.show_exceptions = false
|
23
|
+
|
24
|
+
# Disable request forgery protection in test environment
|
25
|
+
config.action_controller.allow_forgery_protection = false
|
26
|
+
|
27
|
+
# Tell Action Mailer not to deliver emails to the real world.
|
28
|
+
# The :test delivery method accumulates sent emails in the
|
29
|
+
# ActionMailer::Base.deliveries array.
|
30
|
+
config.action_mailer.delivery_method = :test
|
31
|
+
|
32
|
+
# Use SQL instead of Active Record's schema dumper when creating the test database.
|
33
|
+
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
34
|
+
# like if you have constraints or database-specific column types
|
35
|
+
# config.active_record.schema_format = :sql
|
36
|
+
|
37
|
+
# Print deprecation notices to the stderr
|
38
|
+
config.active_support.deprecation = :stderr
|
39
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
|
4
|
+
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
|
5
|
+
|
6
|
+
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
|
7
|
+
# Rails.backtrace_cleaner.remove_silencers!
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Add new inflection rules using the following format
|
4
|
+
# (all these examples are active by default):
|
5
|
+
# ActiveSupport::Inflector.inflections do |inflect|
|
6
|
+
# inflect.plural /^(ox)$/i, '\1en'
|
7
|
+
# inflect.singular /^(ox)en/i, '\1'
|
8
|
+
# inflect.irregular 'person', 'people'
|
9
|
+
# inflect.uncountable %w( fish sheep )
|
10
|
+
# end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Your secret key for verifying the integrity of signed cookies.
|
4
|
+
# If you change this key, all old signed cookies will become invalid!
|
5
|
+
# Make sure the secret is at least 30 characters and all random,
|
6
|
+
# no regular words or you'll be exposed to dictionary attacks.
|
7
|
+
Dummy::Application.config.secret_token = 'b9e87a8c887892475e40f46ab1dd85f8b6e291b6fd7a866934eba0467d9780a93e1fcb36760254e3f46dbed3a6fe1d3a2f5677499784ba61b3cc1ceda9cd1fda'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
Dummy::Application.config.session_store :cookie_store, :key => '_dummy_session'
|
4
|
+
|
5
|
+
# Use the database for sessions instead of the cookie-based default,
|
6
|
+
# which shouldn't be used to store highly confidential information
|
7
|
+
# (create the session table with "rails generate session_migration")
|
8
|
+
# Dummy::Application.config.session_store :active_record_store
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
#
|
3
|
+
# This file contains settings for ActionController::ParamsWrapper which
|
4
|
+
# is enabled by default.
|
5
|
+
|
6
|
+
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
7
|
+
ActionController::Base.wrap_parameters :format => [:json]
|
8
|
+
|
9
|
+
# Disable root element in JSON by default.
|
10
|
+
if defined?(ActiveRecord)
|
11
|
+
ActiveRecord::Base.include_root_in_json = false
|
12
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
Dummy::Application.routes.draw do
|
2
|
+
# The priority is based upon order of creation:
|
3
|
+
# first created -> highest priority.
|
4
|
+
|
5
|
+
# Sample of regular route:
|
6
|
+
# match 'products/:id' => 'catalog#view'
|
7
|
+
# Keep in mind you can assign values other than :controller and :action
|
8
|
+
|
9
|
+
# Sample of named route:
|
10
|
+
# match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
|
11
|
+
# This route can be invoked with purchase_url(:id => product.id)
|
12
|
+
|
13
|
+
# Sample resource route (maps HTTP verbs to controller actions automatically):
|
14
|
+
# resources :products
|
15
|
+
|
16
|
+
# Sample resource route with options:
|
17
|
+
# resources :products do
|
18
|
+
# member do
|
19
|
+
# get 'short'
|
20
|
+
# post 'toggle'
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# collection do
|
24
|
+
# get 'sold'
|
25
|
+
# end
|
26
|
+
# end
|
27
|
+
|
28
|
+
# Sample resource route with sub-resources:
|
29
|
+
# resources :products do
|
30
|
+
# resources :comments, :sales
|
31
|
+
# resource :seller
|
32
|
+
# end
|
33
|
+
|
34
|
+
# Sample resource route with more complex sub-resources
|
35
|
+
# resources :products do
|
36
|
+
# resources :comments
|
37
|
+
# resources :sales do
|
38
|
+
# get 'recent', :on => :collection
|
39
|
+
# end
|
40
|
+
# end
|
41
|
+
|
42
|
+
# Sample resource route within a namespace:
|
43
|
+
# namespace :admin do
|
44
|
+
# # Directs /admin/products/* to Admin::ProductsController
|
45
|
+
# # (app/controllers/admin/products_controller.rb)
|
46
|
+
# resources :products
|
47
|
+
# end
|
48
|
+
|
49
|
+
# You can have the root of your site routed with "root"
|
50
|
+
# just remember to delete public/index.html.
|
51
|
+
# root :to => 'welcome#index'
|
52
|
+
|
53
|
+
# See how all your routes lay out with "rake routes"
|
54
|
+
|
55
|
+
# This is a legacy wild controller route that's not recommended for RESTful applications.
|
56
|
+
# Note: This route will make all actions in every controller accessible via GET requests.
|
57
|
+
# match ':controller(/:action(/:id(.:format)))'
|
58
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Everything listed in this migration will be added to a migration file
|
2
|
+
# inside of your main app.
|
3
|
+
class CreateEmails < ActiveRecord::Migration
|
4
|
+
def self.up
|
5
|
+
create_table :emails do |t|
|
6
|
+
t.string :from_address, :null => false
|
7
|
+
|
8
|
+
t.string :reply_to_address,
|
9
|
+
:subject
|
10
|
+
|
11
|
+
# The following addresses have been defined as text fields to allow for multiple recipients. These fields could
|
12
|
+
# instead be defined as strings, and even indexed, if you'd like to improve search performance and you can
|
13
|
+
# confidently limit the size of their contents.
|
14
|
+
|
15
|
+
t.text :to_address,
|
16
|
+
:cc_address,
|
17
|
+
:bcc_address
|
18
|
+
|
19
|
+
t.text :content
|
20
|
+
|
21
|
+
t.datetime :sent_at
|
22
|
+
t.timestamps
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.down
|
27
|
+
drop_table :emails
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
5
|
+
#
|
6
|
+
# Note that this schema.rb definition is the authoritative source for your
|
7
|
+
# database schema. If you need to create the application database on another
|
8
|
+
# system, you should be using db:schema:load, not running all the migrations
|
9
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
10
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
11
|
+
#
|
12
|
+
# It's strongly recommended to check this file into your version control system.
|
13
|
+
|
14
|
+
ActiveRecord::Schema.define(:version => 20110916191655) do
|
15
|
+
|
16
|
+
create_table "emails", :force => true do |t|
|
17
|
+
t.string "from_address", :null => false
|
18
|
+
t.string "reply_to_address"
|
19
|
+
t.string "subject"
|
20
|
+
t.text "to_address"
|
21
|
+
t.text "cc_address"
|
22
|
+
t.text "bcc_address"
|
23
|
+
t.text "content"
|
24
|
+
t.datetime "sent_at"
|
25
|
+
t.datetime "created_at", :null => false
|
26
|
+
t.datetime "updated_at", :null => false
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
Binary file
|
@@ -0,0 +1,87 @@
|
|
1
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
2
|
+
[1m[35m (2.4ms)[0m CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
|
3
|
+
[1m[36m (0.0ms)[0m [1mPRAGMA index_list("schema_migrations")[0m
|
4
|
+
[1m[35m (1.4ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
5
|
+
[1m[36m (0.1ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
6
|
+
Migrating to CreateEmails (20110916191655)
|
7
|
+
[1m[35m (0.0ms)[0m begin transaction
|
8
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "emails" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_address" varchar(255) NOT NULL, "reply_to_address" varchar(255), "subject" varchar(255), "to_address" text, "cc_address" text, "bcc_address" text, "content" text, "sent_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) [0m
|
9
|
+
[1m[35m (0.1ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20110916191655')
|
10
|
+
[1m[36m (3.7ms)[0m [1mcommit transaction[0m
|
11
|
+
[1m[35m (0.3ms)[0m select sqlite_version(*)
|
12
|
+
[1m[36m (0.1ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
13
|
+
[1m[35m (0.0ms)[0m PRAGMA index_list("emails")
|
14
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
15
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
16
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
17
|
+
[1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "emails"
|
18
|
+
Rendered sample_mailer/hello.text.erb (1.8ms)
|
19
|
+
[1m[36m (0.1ms)[0m [1mSAVEPOINT active_record_1[0m
|
20
|
+
[1m[35mSQL (29.1ms)[0m INSERT INTO "emails" ("bcc_address", "cc_address", "content", "created_at", "from_address", "reply_to_address", "sent_at", "subject", "to_address", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["bcc_address", "bcc@example.com"], ["cc_address", "cc@example.com"], ["content", "Date: Thu, 09 Feb 2012 18:27:47 -0500\r\nFrom: from@example.com\r\nReply-To: reply_to@example.com\r\nTo: to@example.com\r\nCc: cc@example.com\r\nMessage-ID: <4f345673b583f_4bf83fce30834d3c916ad@dgmpro.local.mail>\r\nSubject: Hiya!\r\nMime-Version: 1.0\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\nPapaya"], ["created_at", Thu, 09 Feb 2012 23:27:47 UTC +00:00], ["from_address", "from@example.com"], ["reply_to_address", "reply_to@example.com"], ["sent_at", nil], ["subject", "Hiya!"], ["to_address", "to@example.com"], ["updated_at", Thu, 09 Feb 2012 23:27:47 UTC +00:00]]
|
21
|
+
[1m[36m (0.1ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
22
|
+
|
23
|
+
Sent mail to to@example.com (48ms)
|
24
|
+
Date: Thu, 09 Feb 2012 18:27:47 -0500
|
25
|
+
From: from@example.com
|
26
|
+
Reply-To: reply_to@example.com
|
27
|
+
To: to@example.com
|
28
|
+
Cc: cc@example.com
|
29
|
+
Message-ID: <4f345673b583f_4bf83fce30834d3c916ad@dgmpro.local.mail>
|
30
|
+
Subject: Hiya!
|
31
|
+
Mime-Version: 1.0
|
32
|
+
Content-Type: text/plain;
|
33
|
+
charset=UTF-8
|
34
|
+
Content-Transfer-Encoding: 7bit
|
35
|
+
|
36
|
+
Papaya
|
37
|
+
[1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "emails"
|
38
|
+
[1m[36mMailhopper::Email Load (0.2ms)[0m [1mSELECT "emails".* FROM "emails" ORDER BY created_at DESC LIMIT 1[0m
|
39
|
+
[1m[35m (0.5ms)[0m rollback transaction
|
40
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
41
|
+
[1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "emails"
|
42
|
+
Rendered sample_mailer/hello.text.erb (0.1ms)
|
43
|
+
[1m[36m (0.1ms)[0m [1mSAVEPOINT active_record_1[0m
|
44
|
+
[1m[35mSQL (0.4ms)[0m INSERT INTO "emails" ("bcc_address", "cc_address", "content", "created_at", "from_address", "reply_to_address", "sent_at", "subject", "to_address", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["bcc_address", "bcc1@example.com,bcc2@example.com"], ["cc_address", "cc1@example.com,cc2@example.com"], ["content", "Date: Thu, 09 Feb 2012 18:27:47 -0500\r\nFrom: from1@example.com\r\nReply-To: reply_to@example.com\r\nTo: to1@example.com, \r\n to2@example.com\r\nCc: cc1@example.com, \r\n cc2@example.com\r\nMessage-ID: <4f345673c3509_4bf83fce30834d3c917d1@dgmpro.local.mail>\r\nSubject: Hiya!\r\nMime-Version: 1.0\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\nPapaya"], ["created_at", Thu, 09 Feb 2012 23:27:47 UTC +00:00], ["from_address", "from1@example.com"], ["reply_to_address", "reply_to@example.com"], ["sent_at", nil], ["subject", "Hiya!"], ["to_address", "to1@example.com,to2@example.com"], ["updated_at", Thu, 09 Feb 2012 23:27:47 UTC +00:00]]
|
45
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
46
|
+
|
47
|
+
Sent mail to to1@example.com, to2@example.com (12ms)
|
48
|
+
Date: Thu, 09 Feb 2012 18:27:47 -0500
|
49
|
+
From: from1@example.com
|
50
|
+
Reply-To: reply_to@example.com
|
51
|
+
To: to1@example.com,
|
52
|
+
to2@example.com
|
53
|
+
Cc: cc1@example.com,
|
54
|
+
cc2@example.com
|
55
|
+
Message-ID: <4f345673c3509_4bf83fce30834d3c917d1@dgmpro.local.mail>
|
56
|
+
Subject: Hiya!
|
57
|
+
Mime-Version: 1.0
|
58
|
+
Content-Type: text/plain;
|
59
|
+
charset=UTF-8
|
60
|
+
Content-Transfer-Encoding: 7bit
|
61
|
+
|
62
|
+
Papaya
|
63
|
+
[1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "emails"
|
64
|
+
[1m[36mMailhopper::Email Load (0.2ms)[0m [1mSELECT "emails".* FROM "emails" ORDER BY created_at DESC LIMIT 1[0m
|
65
|
+
[1m[35m (0.6ms)[0m rollback transaction
|
66
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
67
|
+
[1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "emails"
|
68
|
+
Rendered sample_mailer/hello.text.erb (0.1ms)
|
69
|
+
[1m[36m (0.1ms)[0m [1mSAVEPOINT active_record_1[0m
|
70
|
+
[1m[35mSQL (0.4ms)[0m INSERT INTO "emails" ("bcc_address", "cc_address", "content", "created_at", "from_address", "reply_to_address", "sent_at", "subject", "to_address", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["bcc_address", nil], ["cc_address", nil], ["content", "Date: Thu, 09 Feb 2012 18:27:47 -0500\r\nFrom: from@example.com\r\nTo: to@example.com\r\nMessage-ID: <4f345673c7d2f_4bf83fce30834d3c91854@dgmpro.local.mail>\r\nSubject: Hiya!\r\nMime-Version: 1.0\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\nPapaya"], ["created_at", Thu, 09 Feb 2012 23:27:47 UTC +00:00], ["from_address", "from@example.com"], ["reply_to_address", nil], ["sent_at", nil], ["subject", "Hiya!"], ["to_address", "to@example.com"], ["updated_at", Thu, 09 Feb 2012 23:27:47 UTC +00:00]]
|
71
|
+
[1m[36m (0.0ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
|
72
|
+
|
73
|
+
Sent mail to to@example.com (7ms)
|
74
|
+
Date: Thu, 09 Feb 2012 18:27:47 -0500
|
75
|
+
From: from@example.com
|
76
|
+
To: to@example.com
|
77
|
+
Message-ID: <4f345673c7d2f_4bf83fce30834d3c91854@dgmpro.local.mail>
|
78
|
+
Subject: Hiya!
|
79
|
+
Mime-Version: 1.0
|
80
|
+
Content-Type: text/plain;
|
81
|
+
charset=UTF-8
|
82
|
+
Content-Transfer-Encoding: 7bit
|
83
|
+
|
84
|
+
Papaya
|
85
|
+
[1m[35m (0.1ms)[0m SELECT COUNT(*) FROM "emails"
|
86
|
+
[1m[36mMailhopper::Email Load (0.2ms)[0m [1mSELECT "emails".* FROM "emails" ORDER BY created_at DESC LIMIT 1[0m
|
87
|
+
[1m[35m (0.5ms)[0m rollback transaction
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/404.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
23
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/422.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The change you wanted was rejected.</h1>
|
23
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/500.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>We're sorry, but something went wrong.</h1>
|
23
|
+
<p>We've been notified about this issue and we'll take a look at it shortly.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
File without changes
|
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
+
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
6
|
+
require 'rails/commands'
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Email" do
|
4
|
+
let(:email) { Mailhopper::Email.new }
|
5
|
+
|
6
|
+
it "should require a from address" do
|
7
|
+
assert !email.valid?
|
8
|
+
email.from_address = 'user@example.com'
|
9
|
+
assert email.valid?
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should be generated when mail is sent to individual addresses" do
|
13
|
+
headers = {
|
14
|
+
:from => 'from@example.com',
|
15
|
+
:to => 'to@example.com',
|
16
|
+
:cc => 'cc@example.com',
|
17
|
+
:bcc => 'bcc@example.com',
|
18
|
+
:reply_to => 'reply_to@example.com',
|
19
|
+
:subject => 'Hiya!'
|
20
|
+
}
|
21
|
+
content = 'Papaya'
|
22
|
+
|
23
|
+
generate_and_verify_email(headers, content)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be generated when mail is sent to multiple addresses" do
|
27
|
+
headers = {
|
28
|
+
:from => 'from1@example.com',
|
29
|
+
:to => ['to1@example.com', 'to2@example.com'],
|
30
|
+
:cc => ['cc1@example.com', 'cc2@example.com'],
|
31
|
+
:bcc => ['bcc1@example.com', 'bcc2@example.com'],
|
32
|
+
:reply_to => 'reply_to@example.com',
|
33
|
+
:subject => 'Hiya!'
|
34
|
+
}
|
35
|
+
content = 'Papaya'
|
36
|
+
|
37
|
+
generate_and_verify_email(headers, content)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should be generated when mail is sent to blank addresses" do
|
41
|
+
headers = {
|
42
|
+
:from => 'from@example.com',
|
43
|
+
:to => 'to@example.com',
|
44
|
+
:cc => nil,
|
45
|
+
:bcc => nil,
|
46
|
+
:reply_to => nil,
|
47
|
+
:subject => 'Hiya!'
|
48
|
+
}
|
49
|
+
content = 'Papaya'
|
50
|
+
|
51
|
+
generate_and_verify_email(headers, content)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def generate_and_verify_email(headers, content)
|
58
|
+
assert_equal Mailhopper::Email.count, 0
|
59
|
+
SampleMailer.hello(headers, content).deliver
|
60
|
+
assert_equal Mailhopper::Email.count, 1
|
61
|
+
|
62
|
+
email = Mailhopper::Email.first
|
63
|
+
|
64
|
+
assert_email_matches_headers(headers, email)
|
65
|
+
|
66
|
+
# Email content will include headers as well as content
|
67
|
+
assert email.content.include?(content)
|
68
|
+
|
69
|
+
assert email.sent_at.nil?
|
70
|
+
end
|
71
|
+
|
72
|
+
def assert_email_matches_headers(headers, email)
|
73
|
+
assert_address_matches_header headers[:from], email.from_address
|
74
|
+
assert_address_matches_header headers[:to], email.to_address
|
75
|
+
assert_address_matches_header headers[:cc], email.cc_address
|
76
|
+
assert_address_matches_header headers[:bcc], email.bcc_address
|
77
|
+
assert_equal headers[:reply_to], email.reply_to_address
|
78
|
+
assert_equal headers[:subject], email.subject
|
79
|
+
end
|
80
|
+
|
81
|
+
def assert_address_matches_header(header, address)
|
82
|
+
if header.kind_of? Array
|
83
|
+
assert_equal header.join(','), address
|
84
|
+
else
|
85
|
+
assert_equal header, address
|
86
|
+
end
|
87
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
|
+
ENV["RAILS_ENV"] ||= 'test'
|
3
|
+
require File.expand_path("../../spec/dummy/config/environment", __FILE__)
|
4
|
+
require 'rspec/rails'
|
5
|
+
require 'rspec/autorun'
|
6
|
+
|
7
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
8
|
+
# in spec/support/ and its subdirectories.
|
9
|
+
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
# ## Mock Framework
|
13
|
+
#
|
14
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
15
|
+
#
|
16
|
+
# config.mock_with :mocha
|
17
|
+
# config.mock_with :flexmock
|
18
|
+
# config.mock_with :rr
|
19
|
+
|
20
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
21
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
22
|
+
|
23
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
24
|
+
# examples within a transaction, remove the following line or assign false
|
25
|
+
# instead of true.
|
26
|
+
config.use_transactional_fixtures = true
|
27
|
+
|
28
|
+
# If true, the base class of anonymous controllers will be inferred
|
29
|
+
# automatically. This will be the default behavior in future versions of
|
30
|
+
# rspec-rails.
|
31
|
+
config.infer_base_class_for_anonymous_controllers = false
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailhopper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70261996136400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70261996136400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &70261996134720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.3.4
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70261996134720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec-rails
|
38
|
-
requirement: &
|
38
|
+
requirement: &70261996133420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70261996133420
|
47
47
|
description: Mailhopper stores your application's emails in an ActiveRecord queue
|
48
48
|
for asynchronous delivery. Use Mailhopper in combination with a delivery agent such
|
49
49
|
as DelayedMailhopper.
|
@@ -65,10 +65,45 @@ files:
|
|
65
65
|
- lib/mailhopper/queue.rb
|
66
66
|
- lib/mailhopper/version.rb
|
67
67
|
- lib/mailhopper.rb
|
68
|
-
- lib/tasks/mailhopper_tasks.rake
|
69
68
|
- MIT-LICENSE
|
70
69
|
- Rakefile
|
71
70
|
- README.md
|
71
|
+
- spec/dummy/app/assets/javascripts/application.js
|
72
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
73
|
+
- spec/dummy/app/controllers/application_controller.rb
|
74
|
+
- spec/dummy/app/helpers/application_helper.rb
|
75
|
+
- spec/dummy/app/mailers/sample_mailer.rb
|
76
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
77
|
+
- spec/dummy/app/views/sample_mailer/hello.text.erb
|
78
|
+
- spec/dummy/config/application.rb
|
79
|
+
- spec/dummy/config/boot.rb
|
80
|
+
- spec/dummy/config/database.yml
|
81
|
+
- spec/dummy/config/environment.rb
|
82
|
+
- spec/dummy/config/environments/development.rb
|
83
|
+
- spec/dummy/config/environments/production.rb
|
84
|
+
- spec/dummy/config/environments/test.rb
|
85
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
86
|
+
- spec/dummy/config/initializers/inflections.rb
|
87
|
+
- spec/dummy/config/initializers/mailhopper.rb
|
88
|
+
- spec/dummy/config/initializers/mime_types.rb
|
89
|
+
- spec/dummy/config/initializers/secret_token.rb
|
90
|
+
- spec/dummy/config/initializers/session_store.rb
|
91
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
92
|
+
- spec/dummy/config/locales/en.yml
|
93
|
+
- spec/dummy/config/routes.rb
|
94
|
+
- spec/dummy/config.ru
|
95
|
+
- spec/dummy/db/migrate/20110916191655_create_emails.rb
|
96
|
+
- spec/dummy/db/schema.rb
|
97
|
+
- spec/dummy/db/test.sqlite3
|
98
|
+
- spec/dummy/log/test.log
|
99
|
+
- spec/dummy/public/404.html
|
100
|
+
- spec/dummy/public/422.html
|
101
|
+
- spec/dummy/public/500.html
|
102
|
+
- spec/dummy/public/favicon.ico
|
103
|
+
- spec/dummy/Rakefile
|
104
|
+
- spec/dummy/script/rails
|
105
|
+
- spec/models/email_spec.rb
|
106
|
+
- spec/spec_helper.rb
|
72
107
|
homepage: https://github.com/cerebris/mailhopper
|
73
108
|
licenses: []
|
74
109
|
post_install_message:
|
@@ -93,5 +128,41 @@ rubygems_version: 1.8.10
|
|
93
128
|
signing_key:
|
94
129
|
specification_version: 3
|
95
130
|
summary: A simple ActiveRecord-based email queue for Rails apps.
|
96
|
-
test_files:
|
131
|
+
test_files:
|
132
|
+
- spec/dummy/app/assets/javascripts/application.js
|
133
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
134
|
+
- spec/dummy/app/controllers/application_controller.rb
|
135
|
+
- spec/dummy/app/helpers/application_helper.rb
|
136
|
+
- spec/dummy/app/mailers/sample_mailer.rb
|
137
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
138
|
+
- spec/dummy/app/views/sample_mailer/hello.text.erb
|
139
|
+
- spec/dummy/config/application.rb
|
140
|
+
- spec/dummy/config/boot.rb
|
141
|
+
- spec/dummy/config/database.yml
|
142
|
+
- spec/dummy/config/environment.rb
|
143
|
+
- spec/dummy/config/environments/development.rb
|
144
|
+
- spec/dummy/config/environments/production.rb
|
145
|
+
- spec/dummy/config/environments/test.rb
|
146
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
147
|
+
- spec/dummy/config/initializers/inflections.rb
|
148
|
+
- spec/dummy/config/initializers/mailhopper.rb
|
149
|
+
- spec/dummy/config/initializers/mime_types.rb
|
150
|
+
- spec/dummy/config/initializers/secret_token.rb
|
151
|
+
- spec/dummy/config/initializers/session_store.rb
|
152
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
153
|
+
- spec/dummy/config/locales/en.yml
|
154
|
+
- spec/dummy/config/routes.rb
|
155
|
+
- spec/dummy/config.ru
|
156
|
+
- spec/dummy/db/migrate/20110916191655_create_emails.rb
|
157
|
+
- spec/dummy/db/schema.rb
|
158
|
+
- spec/dummy/db/test.sqlite3
|
159
|
+
- spec/dummy/log/test.log
|
160
|
+
- spec/dummy/public/404.html
|
161
|
+
- spec/dummy/public/422.html
|
162
|
+
- spec/dummy/public/500.html
|
163
|
+
- spec/dummy/public/favicon.ico
|
164
|
+
- spec/dummy/Rakefile
|
165
|
+
- spec/dummy/script/rails
|
166
|
+
- spec/models/email_spec.rb
|
167
|
+
- spec/spec_helper.rb
|
97
168
|
has_rdoc:
|