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.
Files changed (144) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +20 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +26 -0
  6. data/Gemfile.lock +199 -0
  7. data/Guardfile +24 -0
  8. data/LICENSE +22 -0
  9. data/MIT-LICENSE +20 -0
  10. data/Manifest.txt +220 -0
  11. data/Procfile +2 -0
  12. data/README +243 -0
  13. data/README.rdoc +3 -0
  14. data/Rakefile +29 -0
  15. data/app/assets/images/newsletter/.gitkeep +0 -0
  16. data/app/assets/javascripts/newsletter/application.js +15 -0
  17. data/app/assets/stylesheets/newsletter/application.css +13 -0
  18. data/app/controllers/newsletter/application_controller.rb +27 -0
  19. data/app/controllers/newsletter/areas_controller.rb +63 -0
  20. data/app/controllers/newsletter/designs_controller.rb +51 -0
  21. data/app/controllers/newsletter/elements_controller.rb +75 -0
  22. data/app/controllers/newsletter/fields_controller.rb +49 -0
  23. data/app/controllers/newsletter/newsletters_controller.rb +104 -0
  24. data/app/controllers/newsletter/pieces_controller.rb +72 -0
  25. data/app/helpers/newsletter/application_helper.rb +4 -0
  26. data/app/helpers/newsletter/areas_helper.rb +4 -0
  27. data/app/helpers/newsletter/assets_helper.rb +4 -0
  28. data/app/helpers/newsletter/designs_helper.rb +11 -0
  29. data/app/helpers/newsletter/elements_helper.rb +4 -0
  30. data/app/helpers/newsletter/field_values_helper.rb +4 -0
  31. data/app/helpers/newsletter/fields_helper.rb +4 -0
  32. data/app/helpers/newsletter/newsletters_helper.rb +43 -0
  33. data/app/helpers/newsletter/pieces_helper.rb +4 -0
  34. data/app/models/newsletter/area.rb +50 -0
  35. data/app/models/newsletter/asset.rb +31 -0
  36. data/app/models/newsletter/design.rb +160 -0
  37. data/app/models/newsletter/element.rb +169 -0
  38. data/app/models/newsletter/field/inline_asset.rb +67 -0
  39. data/app/models/newsletter/field/text.rb +15 -0
  40. data/app/models/newsletter/field/text_area.rb +15 -0
  41. data/app/models/newsletter/field.rb +115 -0
  42. data/app/models/newsletter/field_value.rb +20 -0
  43. data/app/models/newsletter/newsletter.rb +125 -0
  44. data/app/models/newsletter/piece.rb +96 -0
  45. data/app/models/newsletter.rb +11 -0
  46. data/app/uploaders/newsletter/asset_uploader.rb +51 -0
  47. data/app/views/layouts/newsletter/application.html.erb +135 -0
  48. data/app/views/newsletter/areas/_area.html.erb +49 -0
  49. data/app/views/newsletter/designs/_area_fields.html.erb +4 -0
  50. data/app/views/newsletter/designs/_form.html.erb +41 -0
  51. data/app/views/newsletter/designs/_newsletter_area.html.erb +17 -0
  52. data/app/views/newsletter/designs/edit.html.erb +14 -0
  53. data/app/views/newsletter/designs/index.html.erb +31 -0
  54. data/app/views/newsletter/designs/new.html.erb +9 -0
  55. data/app/views/newsletter/designs/show.html.erb +22 -0
  56. data/app/views/newsletter/elements/_field_fields.html.erb +27 -0
  57. data/app/views/newsletter/elements/_form.html.erb +51 -0
  58. data/app/views/newsletter/elements/_newsletter_field.html.erb +37 -0
  59. data/app/views/newsletter/elements/edit.html.erb +12 -0
  60. data/app/views/newsletter/elements/index.html.erb +32 -0
  61. data/app/views/newsletter/elements/new.html.erb +9 -0
  62. data/app/views/newsletter/elements/show.html.erb +22 -0
  63. data/app/views/newsletter/fields/_form.html.erb +15 -0
  64. data/app/views/newsletter/fields/_inline_asset.html.erb +36 -0
  65. data/app/views/newsletter/fields/_text.html.erb +4 -0
  66. data/app/views/newsletter/fields/_text_area.html.erb +7 -0
  67. data/app/views/newsletter/newsletters/_form.html.erb +21 -0
  68. data/app/views/newsletter/newsletters/_head.html.erb +48 -0
  69. data/app/views/newsletter/newsletters/_newsletter.html.erb +6 -0
  70. data/app/views/newsletter/newsletters/_newsletter_area.html.erb +30 -0
  71. data/app/views/newsletter/newsletters/archive.html.erb +9 -0
  72. data/app/views/newsletter/newsletters/edit.html.erb +37 -0
  73. data/app/views/newsletter/newsletters/index.html.erb +29 -0
  74. data/app/views/newsletter/newsletters/new.html.erb +9 -0
  75. data/app/views/newsletter/newsletters/show.html.erb +6 -0
  76. data/app/views/newsletter/pieces/_form.html.erb +19 -0
  77. data/app/views/newsletter/pieces/edit.html.erb +11 -0
  78. data/app/views/newsletter/pieces/new.html.erb +10 -0
  79. data/app/views/newsletter/pieces/show.html.erb +2 -0
  80. data/assets/docs/index.html +45 -0
  81. data/assets/docs/newsletter_templates/index.html +45 -0
  82. data/config/routes.rb +33 -0
  83. data/db/migrate/001_newsletter_initial.rb +104 -0
  84. data/db/migrate/002_carrier_wave_for_assets.rb +9 -0
  85. data/db/pre-scoped/002_newsletter_scoped.rb +61 -0
  86. data/doc/README_FOR_APP +2 -0
  87. data/doc/newsletter.wiki.txt +130 -0
  88. data/doc/start_rails_engine_with_rspec.txt +43 -0
  89. data/engine_plan.rb +13 -0
  90. data/features/step_definitions/webrat_steps.rb +115 -0
  91. data/features/support/env.rb +17 -0
  92. data/features/support/paths.rb +27 -0
  93. data/lib/deleteable.rb +50 -0
  94. data/lib/newsletter/config.rb +50 -0
  95. data/lib/newsletter/engine.rb +62 -0
  96. data/lib/newsletter/settings.rb +50 -0
  97. data/lib/newsletter/version.rb +3 -0
  98. data/lib/newsletter.rb +7 -0
  99. data/lib/tasks/newsletter.rake +84 -0
  100. data/lib/tasks/newsletter_tasks.rake +4 -0
  101. data/lib/tasks/rspec.rake +158 -0
  102. data/newsletter.gemspec +30 -0
  103. data/newsletters/exports/example-export.yaml +213 -0
  104. data/script/rails +8 -0
  105. data/spec/rcov.opts +2 -0
  106. data/spec/spec.opts +4 -0
  107. data/spec/spec_helper.rb +41 -0
  108. data/spec/test_app/README.rdoc +261 -0
  109. data/spec/test_app/Rakefile +7 -0
  110. data/spec/test_app/app/assets/javascripts/application.js +15 -0
  111. data/spec/test_app/app/assets/stylesheets/application.css +13 -0
  112. data/spec/test_app/app/controllers/application_controller.rb +3 -0
  113. data/spec/test_app/app/helpers/application_helper.rb +2 -0
  114. data/spec/test_app/app/mailers/.gitkeep +0 -0
  115. data/spec/test_app/app/models/.gitkeep +0 -0
  116. data/spec/test_app/app/views/layouts/application.html.erb +14 -0
  117. data/spec/test_app/config/application.rb +65 -0
  118. data/spec/test_app/config/boot.rb +10 -0
  119. data/spec/test_app/config/database.yml +25 -0
  120. data/spec/test_app/config/environment.rb +5 -0
  121. data/spec/test_app/config/environments/development.rb +37 -0
  122. data/spec/test_app/config/environments/production.rb +67 -0
  123. data/spec/test_app/config/environments/test.rb +37 -0
  124. data/spec/test_app/config/initializers/backtrace_silencers.rb +7 -0
  125. data/spec/test_app/config/initializers/inflections.rb +15 -0
  126. data/spec/test_app/config/initializers/mime_types.rb +5 -0
  127. data/spec/test_app/config/initializers/secret_token.rb +7 -0
  128. data/spec/test_app/config/initializers/session_store.rb +8 -0
  129. data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
  130. data/spec/test_app/config/locales/en.yml +5 -0
  131. data/spec/test_app/config/newsletter.yml +9 -0
  132. data/spec/test_app/config/routes.rb +4 -0
  133. data/spec/test_app/config.ru +4 -0
  134. data/spec/test_app/db/migrate/20131222171229_newsletter_initial.rb +104 -0
  135. data/spec/test_app/db/schema.rb +116 -0
  136. data/spec/test_app/lib/assets/.gitkeep +0 -0
  137. data/spec/test_app/log/.gitkeep +0 -0
  138. data/spec/test_app/public/404.html +26 -0
  139. data/spec/test_app/public/422.html +26 -0
  140. data/spec/test_app/public/500.html +25 -0
  141. data/spec/test_app/public/favicon.ico +0 -0
  142. data/spec/test_app/script/rails +6 -0
  143. data/zeus.json +22 -0
  144. 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
@@ -0,0 +1,3 @@
1
+ module Newsletter
2
+ VERSION = "0.0.1"
3
+ end
data/lib/newsletter.rb ADDED
@@ -0,0 +1,7 @@
1
+ require "newsletter/version"
2
+ require "newsletter/engine"
3
+ require "deleteable" unless defined?(Deleteable)
4
+
5
+ module Newsletter
6
+ end
7
+
@@ -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,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :newsletter do
3
+ # # Task goes here
4
+ # 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
+
@@ -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