Emailvision ruby on rails library
Emailvision4rails is a library used to manage messages and campaigns or more simply newsletters from your rails application.
/!\ Not released yet /!\
Install
Without bundler
$ gem install emailvision4rails
With bundler
Past this line to your Gemfile
gem 'emailvision4rails'
Setup
$ rails generate emailvision4rails:setup
Generator
Emailvision4rails is bundled with a newsletter generator.
$ rails generate newsletter standard daily weekly
create app/newsletters/standard_newsletter.rb
create app/views/standard_newsletter/daily.html.emv
create app/views/standard_newsletter/daily.text.emv
create app/views/standard_newsletter/weekly.html.emv
create app/views/standard_newsletter/weekly.text.emv
Models
Models are ActiveModel compliant
Campaign
Attributes
- name
- mailinglist_id
- message_id
- send_date
- description
- emaildedupflg
- format
- delivery_speed
- notification
- post_click_tracking
- strategy
- target
- url_end_campaign
- url_host
- analytics
Bold attributes must be present
Example
campaign = Emailvision4rails::Campaign.new(
:name => 'Campaign',
:mailinglist_id => 123,
:message_id => 123,
:send_date => Time.now+30.minutes
)
if campaign.create
# Campaign created
else
campaign.errors
end
Message
Attributes
- name
- subject
- from
- from_email
- body
- reply_to
- reply_to_email
- id
- create_date
- to
- description
- encoding
- hotmail_unsub_url
- type
- hotmail_unsub_flg
- is_bounceback
Bold attributes must be present
= Emailvision4rails::Message.new(
,
:name => 'My message',
:subject => 'Hello',
:from => 'Bastien Gysler',
:from_email => '[email protected]',
:reply_to => 'Bastien Gysler',
:reply_to_email => '[email protected]'
)
if .create
# Message created
else
.errors
end
Newsletter (Controller)
Newsletters work like mailers. These are stored in the newsletters directory (/app/newsletters)
Example
$ rails generate newsletter standard
class StandardNewsletter < Emailvision4rails::AbstractNewsletter
def daily_fr(params = {})
(
:message => ,
:campaign => default_campaign_params.merge(:send_date => Time.now+1.day, :mailinglist_id => 123)
)
end
private
def
{
:name => 'My message',
:subject => 'Hello',
:from => 'Bastien Gysler',
:from_email => '[email protected]',
:body => my_body,
:reply_to => 'Bastien Gysler',
:reply_to_email => '[email protected]'
}
end
def default_campaign_params
{
:name => 'Campaign campaign'
}
end
end
StandardNewsletter.daily_fr.publish
Views
Views are stored in app/views and are suffixed by _newsletter.
Two formats are available which are html and text and both must be present. Otherwise and ActionView::MissingTemplate error will be raised.
Template engine that should be used is emv, but others work too.
EMV template engine
EMV is an engine built on top of ERB, but it also adds CSS inlining for HTML files.
It means you can create your views just like others and EMV will do the dirty work to be "email ready".
Author
Bastien Gysler :: bastiengysler.com :: @basgys