Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
initial commit
  • Loading branch information
JackNeto committed Nov 10, 2009
0 parents commit 23c6ad2
Show file tree
Hide file tree
Showing 78 changed files with 11,677 additions and 0 deletions.
3 changes: 3 additions & 0 deletions README
@@ -0,0 +1,3 @@
== PostageApp: Rails example

This is a working Rails app that shows how to send mass emails through PostageApp
10 changes: 10 additions & 0 deletions Rakefile
@@ -0,0 +1,10 @@
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require(File.join(File.dirname(__FILE__), 'config', 'boot'))

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'

require 'tasks/rails'
10 changes: 10 additions & 0 deletions app/controllers/application_controller.rb
@@ -0,0 +1,10 @@
# Filters added to this controller apply to all controllers in the application.
# Likewise, all the methods added will be available for all controllers.

class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details

# Scrub sensitive parameters from your log
# filter_parameter_logging :password
end
12 changes: 12 additions & 0 deletions app/controllers/content_controller.rb
@@ -0,0 +1,12 @@
class ContentController < ApplicationController
def home
if request.post?
@result = UserMailer::deliver_message(params)
if @result.response[:status] == 'ok'
flash.now[:notice] = "Your message has been sent. Check your project in PostageApp"
else
flash.now[:error] = "There was an error sending your message"
end
end
end
end
3 changes: 3 additions & 0 deletions app/helpers/application_helper.rb
@@ -0,0 +1,3 @@
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
end
2 changes: 2 additions & 0 deletions app/helpers/content_helper.rb
@@ -0,0 +1,2 @@
module ContentHelper
end
11 changes: 11 additions & 0 deletions app/models/user_mailer.rb
@@ -0,0 +1,11 @@
class UserMailer < ActionMailer::Base

def message(params)
recipients params[:email] => {'name' => params[:variable]}
from 'somebody@somewhere.com'
body :plain_text_message => params[:plain_text], :html_message => params[:html]
headers 'Reply-to' => 'somebody@somewhere.com'
subject params[:subject]
end

end
8 changes: 8 additions & 0 deletions app/views/content/_current_configuration.rhtml
@@ -0,0 +1,8 @@
<% if Postage.api_key.blank? || Postage.api_key == 'ENTER YOUR API KEY HERE' %>
<p>
Before sending a message you'll need to add your API key to config/initializers/postage.rb
<br/>and restart your server.</p>
<% else %>
<p>Your API key is: <span class="api_key"><%= Postage.api_key %></span></p>
<% end %>

35 changes: 35 additions & 0 deletions app/views/content/home.rhtml
@@ -0,0 +1,35 @@
<h2>Fill in the form on the right to send a message through PostageApp</h2>

<div class="left_column">
<%= render :partial => 'current_configuration' %>
<p>
Enter a subject, your email address and a value for the {{name}} variable.
</p>
<% unless @result.blank? %>
<div class="response">
<p>Here is the response received from PostageApp:</p>
<%= debug @result %>
</div>
<% end%>
</div>


<div class="right_column">
<% form_for :user, :url => home_path do |f| %>
<p><label>Subject:</label> <%= text_field_tag :subject, 'My name is {{name}}' %></p>
<p><label>My email address:</label> <%= text_field_tag :email %></p>
<p><label>{{name}} variable:</label> <%= text_field_tag :variable %></p>
<p>
<label>Plain text content:</label>
<br/>
<%=text_area_tag :plain_text, "Hi\nMy name is {{name}} and this is a test.", :cols => 40, :rows => 5 %>
</p>
<p>
<label>HTML content:</label>
<br/>
<%= text_area_tag :html, "<p>Hi,<p><p>My name is <b>{{name}}</b> and this is a test.</p>", :cols => 40, :rows => 5 %>
</p>
<p><label>&nbsp;</label><%= submit_tag "Send message" %></p>
<% end %>
</div>

30 changes: 30 additions & 0 deletions app/views/layouts/application.rhtml
@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<%= stylesheet_link_tag 'main' %>

<title>Rails example for PostageApp</title>
</heade>
<body>
<div class="content_wrap">
<div class="header">
<%= image_tag 'postageapp_rails.gif' %>

<h1>Rails example for PostageApp<br/><%= link_to "http://postageapp.com/docs", '', :class=>"small", :target=>"_blank" %></h1>
</div>
<div class="content">
<% flash.each do |type, message| %>
<div class="flash_message <%=type.to_s%>">
<%= message %>
</div>
<% end %>
<%= yield %>
</div>
<div class="footer">
developed by THE WORKING GROUP
</div>
</div>
</body>
</html>
1 change: 1 addition & 0 deletions app/views/user_mailer/message.text.html.rhtml
@@ -0,0 +1 @@
<%= @html_message %>
1 change: 1 addition & 0 deletions app/views/user_mailer/message.text.plain.rhtml
@@ -0,0 +1 @@
<%= @plain_text_message%>
110 changes: 110 additions & 0 deletions config/boot.rb
@@ -0,0 +1,110 @@
# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb

RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)

module Rails
class << self
def boot!
unless booted?
preinitialize
pick_boot.run
end
end

def booted?
defined? Rails::Initializer
end

def pick_boot
(vendor_rails? ? VendorBoot : GemBoot).new
end

def vendor_rails?
File.exist?("#{RAILS_ROOT}/vendor/rails")
end

def preinitialize
load(preinitializer_path) if File.exist?(preinitializer_path)
end

def preinitializer_path
"#{RAILS_ROOT}/config/preinitializer.rb"
end
end

class Boot
def run
load_initializer
Rails::Initializer.run(:set_load_path)
end
end

class VendorBoot < Boot
def load_initializer
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
Rails::Initializer.run(:install_gem_spec_stubs)
Rails::GemDependency.add_frozen_gem_path
end
end

class GemBoot < Boot
def load_initializer
self.class.load_rubygems
load_rails_gem
require 'initializer'
end

def load_rails_gem
if version = self.class.gem_version
gem 'rails', version
else
gem 'rails'
end
rescue Gem::LoadError => load_error
$stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
exit 1
end

class << self
def rubygems_version
Gem::RubyGemsVersion rescue nil
end

def gem_version
if defined? RAILS_GEM_VERSION
RAILS_GEM_VERSION
elsif ENV.include?('RAILS_GEM_VERSION')
ENV['RAILS_GEM_VERSION']
else
parse_gem_version(read_environment_rb)
end
end

def load_rubygems
require 'rubygems'
min_version = '1.3.1'
unless rubygems_version >= min_version
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
exit 1
end

rescue LoadError
$stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
exit 1
end

def parse_gem_version(text)
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
end

private
def read_environment_rb
File.read("#{RAILS_ROOT}/config/environment.rb")
end
end
end
end

# All that for this:
Rails.boot!
22 changes: 22 additions & 0 deletions config/database.yml
@@ -0,0 +1,22 @@
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000

production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
12 changes: 12 additions & 0 deletions config/environment.rb
@@ -0,0 +1,12 @@
# Be sure to restart your server when you modify this file

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.3.3' unless defined? RAILS_GEM_VERSION

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
config.gem 'httparty'
config.time_zone = 'UTC'
end
17 changes: 17 additions & 0 deletions config/environments/development.rb
@@ -0,0 +1,17 @@
# Settings specified here will take precedence over those in config/environment.rb

# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the webserver when you make code changes.
config.cache_classes = false

# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true

# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_view.debug_rjs = true
config.action_controller.perform_caching = false

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
28 changes: 28 additions & 0 deletions config/environments/production.rb
@@ -0,0 +1,28 @@
# Settings specified here will take precedence over those in config/environment.rb

# The production environment is meant for finished, "live" apps.
# Code is not reloaded between requests
config.cache_classes = true

# Full error reports are disabled and caching is turned on
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.action_view.cache_template_loading = true

# See everything in the log (default is :info)
# config.log_level = :debug

# Use a different logger for distributed setups
# config.logger = SyslogLogger.new

# Use a different cache store in production
# config.cache_store = :mem_cache_store

# Enable serving of images, stylesheets, and javascripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"

# Disable delivery errors, bad email addresses will be ignored
# config.action_mailer.raise_delivery_errors = false

# Enable threaded mode
# config.threadsafe!
28 changes: 28 additions & 0 deletions config/environments/test.rb
@@ -0,0 +1,28 @@
# Settings specified here will take precedence over those in config/environment.rb

# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true

# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true

# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_view.cache_template_loading = true

# Disable request forgery protection in test environment
config.action_controller.allow_forgery_protection = false

# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test

# Use SQL instead of Active Record's schema dumper when creating the test database.
# This is necessary if your schema can't be completely dumped by the schema dumper,
# like if you have constraints or database-specific column types
# config.active_record.schema_format = :sql
7 changes: 7 additions & 0 deletions config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
# Be sure to restart your server when you modify this file.

# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }

# You can also remove all the silencers if you're trying do debug a problem that might steem from framework code.
# Rails.backtrace_cleaner.remove_silencers!
10 changes: 10 additions & 0 deletions config/initializers/inflections.rb
@@ -0,0 +1,10 @@
# Be sure to restart your server when you modify this file.

# Add new inflection rules using the following format
# (all these examples are active by default):
# ActiveSupport::Inflector.inflections do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
5 changes: 5 additions & 0 deletions config/initializers/mime_types.rb
@@ -0,0 +1,5 @@
# Be sure to restart your server when you modify this file.

# Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf
# Mime::Type.register_alias "text/html", :iphone

0 comments on commit 23c6ad2

Please sign in to comment.