newsletter 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.gitignore +20 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +26 -0
- data/Gemfile.lock +199 -0
- data/Guardfile +24 -0
- data/LICENSE +22 -0
- data/MIT-LICENSE +20 -0
- data/Manifest.txt +220 -0
- data/Procfile +2 -0
- data/README +243 -0
- data/README.rdoc +3 -0
- data/Rakefile +29 -0
- data/app/assets/images/newsletter/.gitkeep +0 -0
- data/app/assets/javascripts/newsletter/application.js +15 -0
- data/app/assets/stylesheets/newsletter/application.css +13 -0
- data/app/controllers/newsletter/application_controller.rb +27 -0
- data/app/controllers/newsletter/areas_controller.rb +63 -0
- data/app/controllers/newsletter/designs_controller.rb +51 -0
- data/app/controllers/newsletter/elements_controller.rb +75 -0
- data/app/controllers/newsletter/fields_controller.rb +49 -0
- data/app/controllers/newsletter/newsletters_controller.rb +104 -0
- data/app/controllers/newsletter/pieces_controller.rb +72 -0
- data/app/helpers/newsletter/application_helper.rb +4 -0
- data/app/helpers/newsletter/areas_helper.rb +4 -0
- data/app/helpers/newsletter/assets_helper.rb +4 -0
- data/app/helpers/newsletter/designs_helper.rb +11 -0
- data/app/helpers/newsletter/elements_helper.rb +4 -0
- data/app/helpers/newsletter/field_values_helper.rb +4 -0
- data/app/helpers/newsletter/fields_helper.rb +4 -0
- data/app/helpers/newsletter/newsletters_helper.rb +43 -0
- data/app/helpers/newsletter/pieces_helper.rb +4 -0
- data/app/models/newsletter/area.rb +50 -0
- data/app/models/newsletter/asset.rb +31 -0
- data/app/models/newsletter/design.rb +160 -0
- data/app/models/newsletter/element.rb +169 -0
- data/app/models/newsletter/field/inline_asset.rb +67 -0
- data/app/models/newsletter/field/text.rb +15 -0
- data/app/models/newsletter/field/text_area.rb +15 -0
- data/app/models/newsletter/field.rb +115 -0
- data/app/models/newsletter/field_value.rb +20 -0
- data/app/models/newsletter/newsletter.rb +125 -0
- data/app/models/newsletter/piece.rb +96 -0
- data/app/models/newsletter.rb +11 -0
- data/app/uploaders/newsletter/asset_uploader.rb +51 -0
- data/app/views/layouts/newsletter/application.html.erb +135 -0
- data/app/views/newsletter/areas/_area.html.erb +49 -0
- data/app/views/newsletter/designs/_area_fields.html.erb +4 -0
- data/app/views/newsletter/designs/_form.html.erb +41 -0
- data/app/views/newsletter/designs/_newsletter_area.html.erb +17 -0
- data/app/views/newsletter/designs/edit.html.erb +14 -0
- data/app/views/newsletter/designs/index.html.erb +31 -0
- data/app/views/newsletter/designs/new.html.erb +9 -0
- data/app/views/newsletter/designs/show.html.erb +22 -0
- data/app/views/newsletter/elements/_field_fields.html.erb +27 -0
- data/app/views/newsletter/elements/_form.html.erb +51 -0
- data/app/views/newsletter/elements/_newsletter_field.html.erb +37 -0
- data/app/views/newsletter/elements/edit.html.erb +12 -0
- data/app/views/newsletter/elements/index.html.erb +32 -0
- data/app/views/newsletter/elements/new.html.erb +9 -0
- data/app/views/newsletter/elements/show.html.erb +22 -0
- data/app/views/newsletter/fields/_form.html.erb +15 -0
- data/app/views/newsletter/fields/_inline_asset.html.erb +36 -0
- data/app/views/newsletter/fields/_text.html.erb +4 -0
- data/app/views/newsletter/fields/_text_area.html.erb +7 -0
- data/app/views/newsletter/newsletters/_form.html.erb +21 -0
- data/app/views/newsletter/newsletters/_head.html.erb +48 -0
- data/app/views/newsletter/newsletters/_newsletter.html.erb +6 -0
- data/app/views/newsletter/newsletters/_newsletter_area.html.erb +30 -0
- data/app/views/newsletter/newsletters/archive.html.erb +9 -0
- data/app/views/newsletter/newsletters/edit.html.erb +37 -0
- data/app/views/newsletter/newsletters/index.html.erb +29 -0
- data/app/views/newsletter/newsletters/new.html.erb +9 -0
- data/app/views/newsletter/newsletters/show.html.erb +6 -0
- data/app/views/newsletter/pieces/_form.html.erb +19 -0
- data/app/views/newsletter/pieces/edit.html.erb +11 -0
- data/app/views/newsletter/pieces/new.html.erb +10 -0
- data/app/views/newsletter/pieces/show.html.erb +2 -0
- data/assets/docs/index.html +45 -0
- data/assets/docs/newsletter_templates/index.html +45 -0
- data/config/routes.rb +33 -0
- data/db/migrate/001_newsletter_initial.rb +104 -0
- data/db/migrate/002_carrier_wave_for_assets.rb +9 -0
- data/db/pre-scoped/002_newsletter_scoped.rb +61 -0
- data/doc/README_FOR_APP +2 -0
- data/doc/newsletter.wiki.txt +130 -0
- data/doc/start_rails_engine_with_rspec.txt +43 -0
- data/engine_plan.rb +13 -0
- data/features/step_definitions/webrat_steps.rb +115 -0
- data/features/support/env.rb +17 -0
- data/features/support/paths.rb +27 -0
- data/lib/deleteable.rb +50 -0
- data/lib/newsletter/config.rb +50 -0
- data/lib/newsletter/engine.rb +62 -0
- data/lib/newsletter/settings.rb +50 -0
- data/lib/newsletter/version.rb +3 -0
- data/lib/newsletter.rb +7 -0
- data/lib/tasks/newsletter.rake +84 -0
- data/lib/tasks/newsletter_tasks.rake +4 -0
- data/lib/tasks/rspec.rake +158 -0
- data/newsletter.gemspec +30 -0
- data/newsletters/exports/example-export.yaml +213 -0
- data/script/rails +8 -0
- data/spec/rcov.opts +2 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +41 -0
- data/spec/test_app/README.rdoc +261 -0
- data/spec/test_app/Rakefile +7 -0
- data/spec/test_app/app/assets/javascripts/application.js +15 -0
- data/spec/test_app/app/assets/stylesheets/application.css +13 -0
- data/spec/test_app/app/controllers/application_controller.rb +3 -0
- data/spec/test_app/app/helpers/application_helper.rb +2 -0
- data/spec/test_app/app/mailers/.gitkeep +0 -0
- data/spec/test_app/app/models/.gitkeep +0 -0
- data/spec/test_app/app/views/layouts/application.html.erb +14 -0
- data/spec/test_app/config/application.rb +65 -0
- data/spec/test_app/config/boot.rb +10 -0
- data/spec/test_app/config/database.yml +25 -0
- data/spec/test_app/config/environment.rb +5 -0
- data/spec/test_app/config/environments/development.rb +37 -0
- data/spec/test_app/config/environments/production.rb +67 -0
- data/spec/test_app/config/environments/test.rb +37 -0
- data/spec/test_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/test_app/config/initializers/inflections.rb +15 -0
- data/spec/test_app/config/initializers/mime_types.rb +5 -0
- data/spec/test_app/config/initializers/secret_token.rb +7 -0
- data/spec/test_app/config/initializers/session_store.rb +8 -0
- data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/test_app/config/locales/en.yml +5 -0
- data/spec/test_app/config/newsletter.yml +9 -0
- data/spec/test_app/config/routes.rb +4 -0
- data/spec/test_app/config.ru +4 -0
- data/spec/test_app/db/migrate/20131222171229_newsletter_initial.rb +104 -0
- data/spec/test_app/db/schema.rb +116 -0
- data/spec/test_app/lib/assets/.gitkeep +0 -0
- data/spec/test_app/log/.gitkeep +0 -0
- data/spec/test_app/public/404.html +26 -0
- data/spec/test_app/public/422.html +26 -0
- data/spec/test_app/public/500.html +25 -0
- data/spec/test_app/public/favicon.ico +0 -0
- data/spec/test_app/script/rails +6 -0
- data/zeus.json +22 -0
- metadata +352 -0
data/lib/deleteable.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
module Deleteable
|
2
|
+
|
3
|
+
def self.included(receiver)
|
4
|
+
receiver.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
def is_deleted?
|
8
|
+
!deleted_at.nil?
|
9
|
+
end
|
10
|
+
|
11
|
+
def delete
|
12
|
+
update_attribute(:deleted_at,Time.now)
|
13
|
+
end
|
14
|
+
|
15
|
+
def undelete
|
16
|
+
update_attribute(:deleted_at,nil)
|
17
|
+
end
|
18
|
+
|
19
|
+
module ClassMethods
|
20
|
+
def find(*args)
|
21
|
+
if args[0] == (:exclusive_scope)
|
22
|
+
args.shift
|
23
|
+
super
|
24
|
+
else
|
25
|
+
with_scope(:find => {:conditions => ["#{table_name}.deleted_at is null"]}) do
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
module DeleteableActions
|
35
|
+
def delete
|
36
|
+
destroy
|
37
|
+
end
|
38
|
+
|
39
|
+
def destroy
|
40
|
+
thing = controller_name.singularize.split('_').collect{|string| string.capitalize}.join.constantize.find(params[:id])
|
41
|
+
thing.delete
|
42
|
+
redirect_to(eval("#{controller_name}_path(derailed_params)"))
|
43
|
+
end
|
44
|
+
|
45
|
+
def undelete
|
46
|
+
thing = controller_name.singularize.split('_').collect{|string| string.capitalize}.join.constantize.find(:exclusive_scope,params[:id])
|
47
|
+
thing.undelete
|
48
|
+
redirect_to(eval("#{controller_name}_path(derailed_params)"))
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
class Newsletter::Config
|
5
|
+
attr_reader :sections, :params
|
6
|
+
|
7
|
+
def initialize(file = nil)
|
8
|
+
@sections = {}
|
9
|
+
@params = {}
|
10
|
+
use_file!(file) if file
|
11
|
+
end
|
12
|
+
|
13
|
+
def use_file!(file)
|
14
|
+
begin
|
15
|
+
hash = YAML::load(ERB.new(IO.read(file)).result)
|
16
|
+
@sections.merge!(hash) {|key, old_val, new_val| (old_val || new_val).merge new_val }
|
17
|
+
@params.merge!(@sections['common'])
|
18
|
+
rescue => e
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def use_section!(section)
|
24
|
+
@params.merge!(@sections[section.to_s]) if @sections.key?(section.to_s)
|
25
|
+
end
|
26
|
+
|
27
|
+
def method_missing(param)
|
28
|
+
param = param.to_s
|
29
|
+
if @params.key?(param)
|
30
|
+
@params[param]
|
31
|
+
else
|
32
|
+
Rails.logger.warn "Invalid AppConfig Parameter " + param
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.initialize!
|
38
|
+
standard_file = File.join(Rails.root,'config','newsletter.yml')
|
39
|
+
local_file = File.join(Rails.root,'config','newsletter.local.yml')
|
40
|
+
unless File.exists?(standard_file)
|
41
|
+
$stderr.puts "Missing Configuration: either define ::Conf with proper values or create a config/newsletter.yml with rake newsletter:default_app_config"
|
42
|
+
end
|
43
|
+
c = ::Newsletter::Config.new
|
44
|
+
c.use_file!("#{Rails.root}/config/newsletter.yml")
|
45
|
+
c.use_file!("#{Rails.root}/config/newsletter.local.yml")
|
46
|
+
c.use_section!(Rails.env)
|
47
|
+
c
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'will_paginate'
|
3
|
+
require 'acts_as_list'
|
4
|
+
require 'dynamic_form'
|
5
|
+
require 'nested_form'
|
6
|
+
require 'carrierwave'
|
7
|
+
require 'carrierwave/orm/activerecord'
|
8
|
+
module Newsletter
|
9
|
+
mattr_accessor :table_prefix, :designs_path, :site_url,
|
10
|
+
:site_path, :layout, :archive_layout, :use_show_for_resources, :asset_path
|
11
|
+
class Engine < ::Rails::Engine
|
12
|
+
isolate_namespace Newsletter
|
13
|
+
initializer "Newsletter.config" do |app|
|
14
|
+
if File.exist?(File.join(Rails.root,'config','newsletter.yml'))
|
15
|
+
Rails.logger.info "Initializing Newsletter"
|
16
|
+
require 'newsletter/settings'
|
17
|
+
::Newsletter.initialize_with_config(::Newsletter::Settings.initialize!)
|
18
|
+
end
|
19
|
+
config.generators do |g|
|
20
|
+
g.test_framework :rspec, :fixture => false
|
21
|
+
g.fixture_replacement :factory_girl, :dir => 'spec/factories'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
PLUGIN_ROOT = File.expand_path(File.join(File.dirname(__FILE__),'..','..'))
|
26
|
+
def self.assets_path
|
27
|
+
File.join(PLUGIN_ROOT,'assets')
|
28
|
+
end
|
29
|
+
def self.initialize_with_config(conf)
|
30
|
+
::Newsletter.table_prefix ||= conf.table_prefix || 'newsletter_' rescue 'newsletter_'
|
31
|
+
::Newsletter.designs_path ||= conf.designs_path || "#{Rails.root}/designs" rescue "#{Rails.root}/designs"
|
32
|
+
default_url_options = ActionController::Base.default_url_options
|
33
|
+
default_site_url = "#{default_url_options[:protocol]||'http'}://#{default_url_options[:domain]}"
|
34
|
+
::Newsletter.site_url ||= conf.site_url || default_site_url rescue default_site_url
|
35
|
+
::Newsletter.site_path ||= conf.site_path || '/' rescue '/'
|
36
|
+
::Newsletter.layout ||= conf.layout || 'application' rescue 'application'
|
37
|
+
::Newsletter.archive_layout ||= conf.archive_layout || 'application' rescue 'application'
|
38
|
+
::Newsletter.use_show_for_resources ||= conf.use_show_for_resources || false rescue false
|
39
|
+
::Newsletter.asset_path ||= conf.asset_path || 'newsletter_assets' rescue 'newsletter_assets'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
Newsletter::Engine.config.to_prepare do
|
43
|
+
Rails.logger.info "Newsletter: Checking for Mail Manager plugin support"
|
44
|
+
begin
|
45
|
+
require 'mail_manager'
|
46
|
+
require 'mail_manager/mailable_registry' unless defined? MailManager::MailableRegistry.respond_to?(:register)
|
47
|
+
if (MailManager::MailableRegistry.respond_to?(:register) rescue false)
|
48
|
+
MailManager::MailableRegistry.register('Newsletter::Newsletter',{
|
49
|
+
:find_mailables => :active,
|
50
|
+
:name => :name,
|
51
|
+
:parts => [
|
52
|
+
['text/plain', :email_text],
|
53
|
+
['text/html', :email_html]
|
54
|
+
]
|
55
|
+
})
|
56
|
+
Newsletter::Newsletter.send(:include, MailManager::MailableRegistry::Mailable)
|
57
|
+
Rails.logger.info "Registered Newsletter Mailable"
|
58
|
+
else
|
59
|
+
Rails.logger.info "Couldn't register Newsletter Mailable"
|
60
|
+
end
|
61
|
+
rescue LoadError => e; end
|
62
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
class Newsletter::Settings
|
5
|
+
attr_reader :sections, :params
|
6
|
+
|
7
|
+
def initialize(file = nil)
|
8
|
+
@sections = {}
|
9
|
+
@params = {}
|
10
|
+
use_file!(file) if file
|
11
|
+
end
|
12
|
+
|
13
|
+
def use_file!(file)
|
14
|
+
begin
|
15
|
+
hash = YAML::load(ERB.new(IO.read(file)).result)
|
16
|
+
@sections.merge!(hash) {|key, old_val, new_val| (old_val || new_val).merge new_val }
|
17
|
+
@params.merge!(@sections['common'])
|
18
|
+
rescue => e
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def use_section!(section)
|
24
|
+
@params.merge!(@sections[section.to_s]) if @sections.key?(section.to_s)
|
25
|
+
end
|
26
|
+
|
27
|
+
def method_missing(param)
|
28
|
+
param = param.to_s
|
29
|
+
if @params.key?(param)
|
30
|
+
@params[param]
|
31
|
+
else
|
32
|
+
Rails.logger.warn "Invalid AppConfig Parameter " + param
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.initialize!
|
38
|
+
standard_file = File.join(Rails.root,'config','newsletter.yml')
|
39
|
+
local_file = File.join(Rails.root,'config','newsletter.local.yml')
|
40
|
+
unless File.exists?(standard_file)
|
41
|
+
$stderr.puts "Missing Configuration: either define ::Conf with proper values or create a config/newsletter.yml with rake newsletter:default_app_config"
|
42
|
+
end
|
43
|
+
c = ::Newsletter::Settings.new
|
44
|
+
c.use_file!("#{Rails.root}/config/newsletter.yml")
|
45
|
+
c.use_file!("#{Rails.root}/config/newsletter.local.yml")
|
46
|
+
c.use_section!(Rails.env)
|
47
|
+
c
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/lib/newsletter.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'rake'
|
2
|
+
ENV["Rails.env"] ||= "development"
|
3
|
+
require "#{Rails.root}/config/environment"
|
4
|
+
|
5
|
+
namespace :newsletter do
|
6
|
+
# desc "Create Newsletter LSI Auth Menus"
|
7
|
+
# task :create_auth_menus do
|
8
|
+
# Rails.logger.warn "Creating Newsletter LSI Auth Menus"
|
9
|
+
# parent_menu = 'Newsletter'
|
10
|
+
# AdminMenu.create_or_find(
|
11
|
+
# :description=>'Newsletter',
|
12
|
+
# :path=>'admin/newsletter/newsletters',
|
13
|
+
# :admin_menu_id=>nil,
|
14
|
+
# :menu_order=>1,
|
15
|
+
# :is_visible=>1,
|
16
|
+
# :auth_all=>1)
|
17
|
+
# AdminMenu.create_or_find(
|
18
|
+
# :description=>'Newsletters',
|
19
|
+
# :path=>'admin/newsletter/newsletters',
|
20
|
+
# :admin_menu_id=>AdminMenu.find_by_description('Newsletter').id,
|
21
|
+
# :menu_order=>1,
|
22
|
+
# :is_visible=>1,
|
23
|
+
# :auth_all=>1)
|
24
|
+
# AdminMenu.create_or_find(
|
25
|
+
# :description=>'Newsletter General Auth',
|
26
|
+
# :path=>'admin/newsletter',
|
27
|
+
# :admin_menu_id=>nil,
|
28
|
+
# :menu_order=>0,
|
29
|
+
# :is_visible=>0,
|
30
|
+
# :auth_all=>1)
|
31
|
+
# AdminMenu.create!(
|
32
|
+
# :description=>'Designs',
|
33
|
+
# :path=>'admin/newsletter/designs',
|
34
|
+
# :admin_menu_id=>AdminMenu.find_by_description('Newsletter').id,
|
35
|
+
# :menu_order=>1,
|
36
|
+
# :is_visible=>1,
|
37
|
+
# :auth_all=>1)
|
38
|
+
# end
|
39
|
+
|
40
|
+
desc "Import Example Newsletter Design"
|
41
|
+
task :import_example_design do
|
42
|
+
Rails.logger.warn "Importing Example Newsletter Design"
|
43
|
+
Newsletter::Design.import(
|
44
|
+
'vendor/plugins/newsletter/newsletters/exports/example-export.yaml')
|
45
|
+
end
|
46
|
+
|
47
|
+
# desc "Add newsletter defaults to config/config.yml"
|
48
|
+
# task :default_app_config, :table_prefix do |t,args|
|
49
|
+
# Rails.logger.warn "Adding newsletter defaults to config/config.yml"
|
50
|
+
# begin
|
51
|
+
# app_config = YAML.load_file('config/config.yml')
|
52
|
+
# rescue => e
|
53
|
+
# app_config = Hash.new
|
54
|
+
# end
|
55
|
+
# File.open('config/config.yml','w') do |file|
|
56
|
+
# file.write YAML.dump({
|
57
|
+
# 'common' => {
|
58
|
+
# 'newsletters_path' => '<%= "#{RAILS_ROOT}/newsletters" %>',
|
59
|
+
# 'asset_path' => 'public/newsletter_assets',
|
60
|
+
# 'newsletter_path_prefix' => '/admin',
|
61
|
+
# 'newsletter_table_prefix' => args.table_prefix
|
62
|
+
# }}.deep_merge(app_config))
|
63
|
+
# end
|
64
|
+
# end
|
65
|
+
desc "Import newsletter migrations"
|
66
|
+
task :import_migrations do
|
67
|
+
Rails.logger.warn "Checking for newsletter migrations..."
|
68
|
+
seconds_offset = 1
|
69
|
+
migrations_dir = ::Newsletter::PLUGIN_ROOT+'/db/migrate'
|
70
|
+
Dir.entries(migrations_dir).
|
71
|
+
select{|filename| filename =~ /^\d+.*rb$/}.sort.each do |filename|
|
72
|
+
migration_name = filename.gsub(/^\d+/,'')
|
73
|
+
if Dir.entries('db/migrate').detect{|file| file =~ /^\d+#{migration_name}$/}
|
74
|
+
puts "Migrations already exist for #{migration_name}"
|
75
|
+
else
|
76
|
+
Rails.logger.info "Importing Migration: #{migration_name}"
|
77
|
+
File.open("db/migrate/#{seconds_offset.seconds.from_now.strftime("%Y%m%d%H%M%S")}#{migration_name}",'w') do |file|
|
78
|
+
file.write File.readlines("#{migrations_dir}/#{filename}").join
|
79
|
+
end
|
80
|
+
seconds_offset += 1
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
# rspec_gem_dir = nil
|
2
|
+
# Dir["#{RAILS_ROOT}/vendor/gems/*"].each do |subdir|
|
3
|
+
# rspec_gem_dir = subdir if subdir.gsub("#{RAILS_ROOT}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb")
|
4
|
+
# end
|
5
|
+
# rspec_plugin_dir = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec')
|
6
|
+
|
7
|
+
# if rspec_gem_dir && (test ?d, rspec_plugin_dir)
|
8
|
+
# raise "\n#{'*'*50}\nYou have rspec installed in both vendor/gems and vendor/plugins\nPlease pick one and dispose of the other.\n#{'*'*50}\n\n"
|
9
|
+
# end
|
10
|
+
|
11
|
+
# if rspec_gem_dir
|
12
|
+
# $LOAD_PATH.unshift("#{rspec_gem_dir}/lib")
|
13
|
+
# elsif File.exist?(rspec_plugin_dir)
|
14
|
+
# $LOAD_PATH.unshift("#{rspec_plugin_dir}/lib")
|
15
|
+
# end
|
16
|
+
|
17
|
+
# begin
|
18
|
+
# require 'spec/rake/spectask'
|
19
|
+
# Rake.application.instance_variable_get('@tasks').delete('default')
|
20
|
+
|
21
|
+
# spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop
|
22
|
+
# task :noop do
|
23
|
+
# end
|
24
|
+
|
25
|
+
# task :default => :spec
|
26
|
+
# task :stats => "spec:statsetup"
|
27
|
+
|
28
|
+
# desc "Run all specs in spec directory (excluding plugin specs)"
|
29
|
+
# Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t|
|
30
|
+
# t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
|
31
|
+
# t.spec_files = FileList['spec/**/*/*_spec.rb']
|
32
|
+
# end
|
33
|
+
|
34
|
+
# namespace :spec do
|
35
|
+
# desc "Run all specs in spec directory with RCov (excluding plugin specs)"
|
36
|
+
# Spec::Rake::SpecTask.new(:rcov) do |t|
|
37
|
+
# t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
|
38
|
+
# t.spec_files = FileList['spec/**/*/*_spec.rb']
|
39
|
+
# t.rcov = true
|
40
|
+
# t.rcov_opts = lambda do
|
41
|
+
# IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
|
42
|
+
# end
|
43
|
+
# end
|
44
|
+
|
45
|
+
# desc "Print Specdoc for all specs (excluding plugin specs)"
|
46
|
+
# Spec::Rake::SpecTask.new(:doc) do |t|
|
47
|
+
# t.spec_opts = ["--format", "specdoc", "--dry-run"]
|
48
|
+
# t.spec_files = FileList['spec/**/*/*_spec.rb']
|
49
|
+
# end
|
50
|
+
|
51
|
+
# desc "Print Specdoc for all plugin examples"
|
52
|
+
# Spec::Rake::SpecTask.new(:plugin_doc) do |t|
|
53
|
+
# t.spec_opts = ["--format", "specdoc", "--dry-run"]
|
54
|
+
# t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*')
|
55
|
+
# end
|
56
|
+
|
57
|
+
# [:models, :controllers, :views, :helpers, :lib].each do |sub|
|
58
|
+
# desc "Run the code examples in spec/#{sub}"
|
59
|
+
# Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
|
60
|
+
# t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
|
61
|
+
# t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
|
62
|
+
# end
|
63
|
+
# end
|
64
|
+
|
65
|
+
# desc "Run the code examples in vendor/plugins (except RSpec's own)"
|
66
|
+
# Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t|
|
67
|
+
# t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
|
68
|
+
# t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*")
|
69
|
+
# end
|
70
|
+
|
71
|
+
# namespace :plugins do
|
72
|
+
# desc "Runs the examples for rspec_on_rails"
|
73
|
+
# Spec::Rake::SpecTask.new(:rspec_on_rails) do |t|
|
74
|
+
# t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
|
75
|
+
# t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*/*_spec.rb']
|
76
|
+
# end
|
77
|
+
# end
|
78
|
+
|
79
|
+
# # Setup specs for stats
|
80
|
+
# task :statsetup do
|
81
|
+
# require 'code_statistics'
|
82
|
+
# ::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models')
|
83
|
+
# ::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views')
|
84
|
+
# ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers')
|
85
|
+
# ::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers')
|
86
|
+
# ::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib')
|
87
|
+
# ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
|
88
|
+
# ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
|
89
|
+
# ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
|
90
|
+
# ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
|
91
|
+
# ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
|
92
|
+
# ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
|
93
|
+
# end
|
94
|
+
|
95
|
+
# namespace :db do
|
96
|
+
# namespace :fixtures do
|
97
|
+
# desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z."
|
98
|
+
# task :load => :environment do
|
99
|
+
# ActiveRecord::Base.establish_connection(Rails.env)
|
100
|
+
# base_dir = File.join(Rails.root, 'spec', 'fixtures')
|
101
|
+
# fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir
|
102
|
+
|
103
|
+
# (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file|
|
104
|
+
# Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*'))
|
105
|
+
# end
|
106
|
+
# end
|
107
|
+
# end
|
108
|
+
# end
|
109
|
+
|
110
|
+
# namespace :server do
|
111
|
+
# daemonized_server_pid = File.expand_path("spec_server.pid", RAILS_ROOT + "/tmp")
|
112
|
+
|
113
|
+
# desc "start spec_server."
|
114
|
+
# task :start do
|
115
|
+
# if File.exist?(daemonized_server_pid)
|
116
|
+
# $stderr.puts "spec_server is already running."
|
117
|
+
# else
|
118
|
+
# $stderr.puts "Starting up spec server."
|
119
|
+
# system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid)
|
120
|
+
# end
|
121
|
+
# end
|
122
|
+
|
123
|
+
# desc "stop spec_server."
|
124
|
+
# task :stop do
|
125
|
+
# unless File.exist?(daemonized_server_pid)
|
126
|
+
# $stderr.puts "No server running."
|
127
|
+
# else
|
128
|
+
# $stderr.puts "Shutting down spec_server."
|
129
|
+
# system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) &&
|
130
|
+
# File.delete(daemonized_server_pid)
|
131
|
+
# end
|
132
|
+
# end
|
133
|
+
|
134
|
+
# desc "reload spec_server."
|
135
|
+
# task :restart do
|
136
|
+
# unless File.exist?(daemonized_server_pid)
|
137
|
+
# $stderr.puts "No server running."
|
138
|
+
# else
|
139
|
+
# $stderr.puts "Reloading down spec_server."
|
140
|
+
# system("kill", "-s", "USR2", File.read(daemonized_server_pid).strip)
|
141
|
+
# end
|
142
|
+
# end
|
143
|
+
# end
|
144
|
+
# end
|
145
|
+
# rescue MissingSourceFile
|
146
|
+
# # if rspec-rails is a configured gem, this will output helpful material and exit ...
|
147
|
+
# require File.expand_path(File.dirname(__FILE__) + "/../../config/environment")
|
148
|
+
|
149
|
+
# # ... otherwise, do this:
|
150
|
+
# raise <<-MSG
|
151
|
+
|
152
|
+
# You have rspec rake tasks installed in
|
153
|
+
# #{__FILE__},
|
154
|
+
# but rspec can not be found in vendor/gems, vendor/plugins or on the system.
|
155
|
+
|
156
|
+
# MSG
|
157
|
+
# end
|
158
|
+
|
data/newsletter.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
# Maintain your gem's version:
|
4
|
+
require "newsletter/version"
|
5
|
+
|
6
|
+
# Describe your gem and declare its dependencies:
|
7
|
+
Gem::Specification.new do |gem|
|
8
|
+
gem.name = "newsletter"
|
9
|
+
gem.version = Newsletter::VERSION
|
10
|
+
gem.authors = ["Lone Star Internet"]
|
11
|
+
gem.email = ["biz@lone-star.net"]
|
12
|
+
gem.description = %q{Newletter templating and management system.}
|
13
|
+
gem.summary = %q{ewletter templating and management system.}
|
14
|
+
gem.homepage = "http://ireach.com"
|
15
|
+
|
16
|
+
gem.add_dependency "rails", "~>3.2"
|
17
|
+
gem.add_dependency "mini_magick"
|
18
|
+
gem.add_dependency "will_paginate"
|
19
|
+
gem.add_dependency 'carrierwave'
|
20
|
+
gem.add_dependency "delayed_job", "~>4"
|
21
|
+
gem.add_dependency "dynamic_form", "~>1.1"
|
22
|
+
gem.add_dependency 'nested_form'
|
23
|
+
gem.add_dependency 'curb'
|
24
|
+
gem.add_dependency 'acts_as_list'
|
25
|
+
|
26
|
+
gem.files = `git ls-files`.split($/)
|
27
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
28
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
29
|
+
gem.require_paths = ["lib"]
|
30
|
+
end
|