crowdblog 0.4.0 → 0.5.0

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/README.md +2 -2
  4. data/app/controllers/crowdblog/admin/transitions_controller.rb +2 -0
  5. data/app/models/crowdblog/post.rb +1 -0
  6. data/app/models/crowdblog/status_change_record.rb +6 -0
  7. data/app/views/crowdblog/admin/posts/_post.html.slim +1 -1
  8. data/config/initializers/state_machine.rb +4 -0
  9. data/crowdblog.gemspec +10 -8
  10. data/db/migrate/20140501164642_create_crowdblog_status_change_records.rb +11 -0
  11. data/lib/crowdblog/rspec/crowdblog_shared_examples.rb +19 -11
  12. data/lib/crowdblog/version.rb +1 -1
  13. data/spec/dummy/bin/bundle +3 -0
  14. data/spec/dummy/bin/rails +4 -0
  15. data/spec/dummy/bin/rake +4 -0
  16. data/spec/dummy/config/application.rb +3 -36
  17. data/spec/dummy/config/boot.rb +3 -9
  18. data/spec/dummy/config/environment.rb +3 -3
  19. data/spec/dummy/config/environments/development.rb +20 -12
  20. data/spec/dummy/config/environments/production.rb +43 -29
  21. data/spec/dummy/config/environments/test.rb +17 -11
  22. data/spec/dummy/config/initializers/assets.rb +8 -0
  23. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  24. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  25. data/spec/dummy/config/initializers/inflections.rb +6 -5
  26. data/spec/dummy/config/initializers/mime_types.rb +0 -1
  27. data/spec/dummy/config/initializers/session_store.rb +1 -6
  28. data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
  29. data/spec/dummy/config/locales/en.yml +20 -2
  30. data/spec/dummy/config/routes.rb +0 -1
  31. data/spec/dummy/config/secrets.yml +22 -0
  32. data/spec/dummy/db/schema.rb +10 -2
  33. data/spec/models/post_spec.rb +4 -4
  34. data/spec/spec_helper.rb +4 -0
  35. metadata +90 -56
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76037e85488c88a53eba460f16fb8e6c1945c32d
4
- data.tar.gz: 388ff6c283a73c76ce50d25ff32fc7c8d0543665
3
+ metadata.gz: d3701a773b898934896fd813b3c38491a1d83799
4
+ data.tar.gz: 04c0e66460f5f20d02af64869cf79eed521c9421
5
5
  SHA512:
6
- metadata.gz: a6d30f3d1a49bcb2fe9fe219399353a1129099d88b59feb01ddc1dd41a013271d92a70024bac76640742e2cc9106941ddf1ff2765b50a2f50374891ef82cf986
7
- data.tar.gz: 9190b664a30fcefe7c76214a357b26d1ee28b6b9bb188b39f01209acd753e262aef407c4a1173884f3b848c94fd96e326371240c38e64f2921ca369c9e946e88
6
+ metadata.gz: 0037b0d43dea9095378013770c3b16405b59a06282af0170c2fce507b3e36f5fb5b4c2b2aa592cfbb26a801f724edd736d1320c6866e8e4dcd85521a37b7674b
7
+ data.tar.gz: e8768d740c137d629a9ba0fed5a305746eed54b3df9207895f53f5fe48eb04ad18f03e95de7845f15b97a3fc88d6d734e7537e0426f6ccf650827453d424b331
data/Gemfile CHANGED
@@ -3,15 +3,15 @@ source "http://rubygems.org"
3
3
  gemspec
4
4
 
5
5
  gem "jquery-rails"
6
+ gem 'nokogiri', '= 1.6.3'
6
7
 
7
8
  group :assets do
8
- gem 'coffee-rails', '~> 4.0.1'
9
- gem 'sass-rails' , '~> 4.0.1'
10
- gem 'uglifier' , '~> 2.3.0'
9
+ gem 'coffee-rails', '~> 4.0.0'
10
+ gem 'sass-rails' , '~> 4.0.0'
11
+ gem 'uglifier' , '~> 2.5.0'
11
12
  end
12
13
 
13
14
  group :development, :test do
14
15
  gem 'rake' # needed for Travis CI: http://bit.ly/xEgH8j
15
16
  gem 'launchy'
16
- gem 'database_cleaner', :github => 'bmabey/database_cleaner'
17
17
  end
data/README.md CHANGED
@@ -6,8 +6,8 @@ CI:
6
6
  Code Climate:
7
7
  [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/crowdint/crowdblog)
8
8
 
9
- Generic Blog engine, currently in use by [blog.crowdint.com](blog.crowdint.com)
10
- and [crowdint.com/careers](crowdint.com/careers), among others.
9
+ Generic Blog engine, currently in use by [blog.crowdint.com](http://blog.crowdint.com)
10
+ and [crowdint.com/careers](http://crowdint.com/careers), among others.
11
11
 
12
12
  ## Installation
13
13
 
@@ -7,6 +7,8 @@ module Crowdblog
7
7
  def create
8
8
  namespace = '_as_publisher' if current_user.is_publisher?
9
9
  @post.send "#{params[:transition]}#{namespace}"
10
+ status = @post.status_change_records.build(user: current_user, state: params[:transition])
11
+ status.save
10
12
  respond_with @post, location: admin_post_url(@post)
11
13
  end
12
14
 
@@ -3,6 +3,7 @@ module Crowdblog
3
3
  belongs_to :author, :class_name => Crowdblog.author_user_class_name
4
4
  belongs_to :publisher, :class_name => Crowdblog.publisher_user_class_name
5
5
  has_many :assets
6
+ has_many :status_change_records
6
7
 
7
8
  delegate :name, to: :author, prefix: true, allow_nil: true
8
9
  delegate :email, to: :author, prefix: true, allow_nil: true
@@ -0,0 +1,6 @@
1
+ module Crowdblog
2
+ class StatusChangeRecord < ActiveRecord::Base
3
+ belongs_to :post
4
+ belongs_to :user, class_name: Crowdblog.publisher_user_class_name
5
+ end
6
+ end
@@ -15,6 +15,6 @@
15
15
  - if current_user.is_publisher?
16
16
  button.btn.btn-small.review Reviewed
17
17
  td.span1
18
- = link_to 'Delete', crowdblog.admin_post_path(post), :method => :delete, :confirm => 'Are you sure?', :class => "btn btn-small"
18
+ = link_to 'Delete', crowdblog.admin_post_path(post), :method => :delete, :data => { :confirm => 'Are you sure?' }, :class => "btn btn-small"
19
19
  td.span1
20
20
  = link_to 'Edit', crowdblog.edit_admin_post_path(post), :class => "btn btn-small"
@@ -0,0 +1,4 @@
1
+ # https://github.com/pluginaweek/state_machine/issues/251
2
+ module StateMachine::Integrations::ActiveModel
3
+ public :around_validation
4
+ end
@@ -5,33 +5,35 @@ require 'crowdblog/version'
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'crowdblog'
7
7
  s.version = Crowdblog::VERSION
8
- s.authors = ['Crowd Interactive', 'David Padilla', 'Chalo Fernandez', 'Ignacio Galindo', 'Nora Alvarado']
9
- s.email = %w(opensource@crowdint.com david@crowdint.com chalofa@crowdint.com ignacio@crowdint.com nora@crowdint.com)
8
+ s.authors = ['Crowd Interactive', 'David Padilla', 'Chalo Fernandez', 'Ignacio Galindo', 'Nora Alvarado', 'Mario Chavez']
9
+ s.email = %w(opensource@crowdint.com david@crowdint.com chalofa@crowdint.com ignacio@crowdint.com nora@crowdint.com mario.chavez@crowdint.com)
10
10
  s.homepage = 'http://github.com/crowdint/crowdblog'
11
11
  s.summary = 'CrowdBlog base functionality and backend'
12
12
  s.description = 'This mountable engine has the basic functionality to manage Posts'
13
+ s.license = 'MIT'
13
14
 
14
15
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
16
  s.files = `git ls-files`.split("\n")
16
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
18
  s.require_paths = %w(lib app)
18
19
 
19
- s.add_dependency 'rails', '~> 4.0.0'
20
+ s.add_dependency 'rails', '~> 4.1.0'
20
21
 
21
- s.add_dependency 'carrierwave', '~> 0.9.0'
22
+ s.add_dependency 'carrierwave', '~> 0.10.0'
22
23
  s.add_dependency 'gravtastic', '~> 3.2.6'
23
24
  s.add_dependency 'jquery-rails'
24
25
  s.add_dependency 'jbuilder'
25
- s.add_dependency 'redcarpet', '~> 3.0.0'
26
- s.add_dependency 'slim', '~> 2.0.2'
26
+ s.add_dependency 'redcarpet', '~> 3.1.0'
27
+ s.add_dependency 'slim', '~> 2.0.0'
27
28
  s.add_dependency 'state_machine', '~> 1.2.0'
28
29
 
29
30
  s.add_development_dependency 'capybara-webkit', '~> 1.0.0'
30
- s.add_development_dependency 'database_cleaner'
31
+ s.add_development_dependency 'database_cleaner', '~> 1.3.0'
31
32
  s.add_development_dependency 'fuubar'
32
33
  s.add_development_dependency 'rspec-rails'
34
+ s.add_development_dependency 'rspec-activemodel-mocks'
33
35
  s.add_development_dependency 'selenium-webdriver'
34
- s.add_development_dependency 'simplecov'
36
+ s.add_development_dependency 'simplecov', '~> 0.9.0'
35
37
  s.add_development_dependency 'simplecov-rcov-text'
36
38
  s.add_development_dependency 'sqlite3'
37
39
  end
@@ -0,0 +1,11 @@
1
+ class CreateCrowdblogStatusChangeRecords < ActiveRecord::Migration
2
+ def change
3
+ create_table :crowdblog_status_change_records do |t|
4
+ t.belongs_to :user
5
+ t.belongs_to :post
6
+ t.string :state
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -8,7 +8,7 @@ shared_examples_for "a crowdblog", :type => :feature do
8
8
  post.save!
9
9
  post.publish_as_publisher
10
10
 
11
- visit crowdblog.root_path
11
+ visit root_path
12
12
 
13
13
  within "#post_#{post.id}" do
14
14
  page.should have_content post.title
@@ -20,14 +20,14 @@ shared_examples_for "a crowdblog", :type => :feature do
20
20
  describe "Admin" do
21
21
  describe "manage posts" do
22
22
  it "creates a post", :js => true do
23
- visit crowdblog.admin_posts_path
23
+ visit admin_posts_path
24
24
  click_link 'New Post'
25
25
 
26
26
  fill_in 'Title', :with => 'A post title'
27
27
  fill_in 'Body' , :with => 'A post body'
28
28
  click_button 'Update'
29
29
 
30
- page.current_path.should == crowdblog.admin_posts_path
30
+ page.current_path.should == admin_posts_path
31
31
  page.should have_content 'A post title'
32
32
  end
33
33
 
@@ -38,7 +38,7 @@ shared_examples_for "a crowdblog", :type => :feature do
38
38
  end
39
39
 
40
40
  it "edits a post" do
41
- visit crowdblog.admin_posts_path
41
+ visit admin_posts_path
42
42
  within "#post_#{post.id}" do
43
43
  click_link 'Edit'
44
44
  end
@@ -47,22 +47,22 @@ shared_examples_for "a crowdblog", :type => :feature do
47
47
  fill_in 'Body' , :with => 'A NEW post body'
48
48
  click_button 'Update'
49
49
 
50
- page.current_path.should == crowdblog.admin_posts_path
50
+ page.current_path.should == admin_posts_path
51
51
  page.should have_content 'A NEW post title'
52
52
  end
53
53
 
54
54
  it "deletes a post" do
55
- visit crowdblog.admin_posts_path
55
+ visit admin_posts_path
56
56
 
57
57
  within "#post_#{post.id}" do
58
58
  click_link 'Delete'
59
59
  end
60
- page.current_path.should == crowdblog.admin_posts_path
60
+ page.current_path.should == admin_posts_path
61
61
  page.should_not have_content 'A post title'
62
62
  end
63
63
 
64
64
  it "publishes a post", :js => true do
65
- visit crowdblog.admin_posts_path
65
+ visit admin_posts_path
66
66
 
67
67
  within "#post_#{post.id}" do
68
68
  button = find_link 'Publish'
@@ -71,13 +71,15 @@ shared_examples_for "a crowdblog", :type => :feature do
71
71
  page.should have_css '.publish-btn.btn-success'
72
72
  page.should have_css '.review.active'
73
73
  post.reload.state.should eq 'published'
74
+ post.status_change_records.last.state.should == 'publish'
75
+ post.status_change_records.last.user.should == ::User.last
74
76
  end
75
77
  end
76
78
 
77
79
  it "draftes a post", :js => true do
78
80
  post.publish_as_publisher!
79
81
 
80
- visit crowdblog.admin_posts_path
82
+ visit admin_posts_path
81
83
 
82
84
  within "#post_#{post.id}" do
83
85
  button = find_link 'Publish'
@@ -86,12 +88,14 @@ shared_examples_for "a crowdblog", :type => :feature do
86
88
  page.should have_css '.publish-btn.btn-danger'
87
89
  page.should have_css '.draft.active'
88
90
  post.reload.state.should eq 'drafted'
91
+ post.status_change_records.last.state.should == 'draft'
92
+ post.status_change_records.last.user.should == ::User.last
89
93
  end
90
94
  end
91
95
 
92
96
  it "marks the post as reviewed", :js => true do
93
97
  post.finish!
94
- visit crowdblog.admin_posts_path
98
+ visit admin_posts_path
95
99
 
96
100
  within "#post_#{post.id}" do
97
101
  button = find_button 'Reviewed'
@@ -99,11 +103,13 @@ shared_examples_for "a crowdblog", :type => :feature do
99
103
 
100
104
  page.should have_css '.review.active'
101
105
  post.reload.state.should eq 'reviewed'
106
+ post.status_change_records.last.state.should == 'review'
107
+ post.status_change_records.last.user.should == ::User.last
102
108
  end
103
109
  end
104
110
 
105
111
  it "marks the post as finished", :js => true do
106
- visit crowdblog.admin_posts_path
112
+ visit admin_posts_path
107
113
 
108
114
  within "#post_#{post.id}" do
109
115
  button = find_button 'Finished'
@@ -111,6 +117,8 @@ shared_examples_for "a crowdblog", :type => :feature do
111
117
 
112
118
  page.should have_css '.finish.active'
113
119
  post.reload.state.should eq 'finished'
120
+ post.status_change_records.last.state.should == 'finish'
121
+ post.status_change_records.last.user.should == ::User.last
114
122
  end
115
123
  end
116
124
  end
@@ -1,3 +1,3 @@
1
1
  module Crowdblog
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
3
+ require_relative '../config/boot'
4
+ require 'rails/commands'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../config/boot'
3
+ require 'rake'
4
+ Rake.application.run
@@ -1,13 +1,13 @@
1
1
  require File.expand_path('../boot', __FILE__)
2
2
 
3
- # Pick the frameworks you want:
4
3
  require "active_record/railtie"
5
4
  require "action_controller/railtie"
6
5
  require "action_mailer/railtie"
7
6
  require "sprockets/railtie"
8
- # require "rails/test_unit/railtie"
9
7
 
10
- Bundler.require
8
+ # Require the gems listed in Gemfile, including any gems
9
+ # you've limited to :test, :development, or :production.
10
+ Bundler.require(*Rails.groups)
11
11
  require "crowdblog"
12
12
 
13
13
  module Dummy
@@ -16,16 +16,6 @@ module Dummy
16
16
  # Application configuration should go into files in config/initializers
17
17
  # -- all .rb files in that directory are automatically loaded.
18
18
 
19
- # Custom directories with classes and modules you want to be autoloadable.
20
- # config.autoload_paths += %W(#{config.root}/extras)
21
-
22
- # Only load the plugins named here, in the order given (default is alphabetical).
23
- # :all can be used as a placeholder for all plugins not explicitly named.
24
- # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
25
-
26
- # Activate observers that should always be running.
27
- # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
28
-
29
19
  # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
30
20
  # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
31
21
  # config.time_zone = 'Central Time (US & Canada)'
@@ -33,28 +23,5 @@ module Dummy
33
23
  # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
34
24
  # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
35
25
  # config.i18n.default_locale = :de
36
-
37
- # Configure the default encoding used in templates for Ruby 1.9.
38
- config.encoding = "utf-8"
39
-
40
- # Configure sensitive parameters which will be filtered from the log file.
41
- config.filter_parameters += [:password]
42
-
43
- # Use SQL instead of Active Record's schema dumper when creating the database.
44
- # This is necessary if your schema can't be completely dumped by the schema dumper,
45
- # like if you have constraints or database-specific column types
46
- # config.active_record.schema_format = :sql
47
-
48
- # Enforce whitelist mode for mass assignment.
49
- # This will create an empty whitelist of attributes available for mass-assignment for all models
50
- # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
51
- # parameters by using an attr_accessible or attr_protected declaration.
52
- # config.active_record.whitelist_attributes = true
53
-
54
- # Enable the asset pipeline
55
- config.assets.enabled = true
56
-
57
- # Version of your assets, change this if you want to expire all your assets
58
- config.assets.version = '1.0'
59
26
  end
60
27
  end
@@ -1,10 +1,4 @@
1
- require 'rubygems'
2
- gemfile = File.expand_path('../../../../Gemfile', __FILE__)
1
+ # Set up gems listed in the Gemfile.
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
3
 
4
- if File.exist?(gemfile)
5
- ENV['BUNDLE_GEMFILE'] = gemfile
6
- require 'bundler'
7
- Bundler.setup
8
- end
9
-
10
- $:.unshift File.expand_path('../../../../lib', __FILE__)
4
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
@@ -1,5 +1,5 @@
1
- # Load the rails application
1
+ # Load the Rails application.
2
2
  require File.expand_path('../application', __FILE__)
3
3
 
4
- # Initialize the rails application
5
- Dummy::Application.initialize!
4
+ # Initialize the Rails application.
5
+ Rails.application.initialize!
@@ -1,29 +1,37 @@
1
- Dummy::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb
1
+ Rails.application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
4
  # In the development environment your application's code is reloaded on
5
5
  # every request. This slows down response time but is perfect for development
6
6
  # since you don't have to restart the web server when you make code changes.
7
7
  config.cache_classes = false
8
8
 
9
- # Show full error reports and disable caching
9
+ # Do not eager load code on boot.
10
+ config.eager_load = false
11
+
12
+ # Show full error reports and disable caching.
10
13
  config.consider_all_requests_local = true
11
14
  config.action_controller.perform_caching = false
12
15
 
13
- # Don't care if the mailer can't send
16
+ # Don't care if the mailer can't send.
14
17
  config.action_mailer.raise_delivery_errors = false
15
18
 
16
- # Print deprecation notices to the Rails logger
19
+ # Print deprecation notices to the Rails logger.
17
20
  config.active_support.deprecation = :log
18
21
 
19
- # Only use best-standards-support built into browsers
20
- config.action_dispatch.best_standards_support = :builtin
21
-
22
- # Do not compress assets
23
- config.assets.compress = false
22
+ # Raise an error on page load if there are pending migrations.
23
+ config.active_record.migration_error = :page_load
24
24
 
25
- # Expands the lines which load the assets
25
+ # Debug mode disables concatenation and preprocessing of assets.
26
+ # This option may cause significant delays in view rendering with a large
27
+ # number of complex assets.
26
28
  config.assets.debug = true
27
29
 
28
- config.eager_load = false
30
+ # Adds additional error checking when serving assets at runtime.
31
+ # Checks for improperly declared sprockets dependencies.
32
+ # Raises helpful error messages.
33
+ config.assets.raise_runtime_errors = true
34
+
35
+ # Raises error for missing translations
36
+ # config.action_view.raise_on_missing_translations = true
29
37
  end
@@ -1,68 +1,82 @@
1
- Dummy::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb
1
+ Rails.application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
- # Code is not reloaded between requests
4
+ # Code is not reloaded between requests.
5
5
  config.cache_classes = true
6
6
 
7
- # Full error reports are disabled and caching is turned on
7
+ # Eager load code on boot. This eager loads most of Rails and
8
+ # your application in memory, allowing both threaded web servers
9
+ # and those relying on copy on write to perform better.
10
+ # Rake tasks automatically ignore this option for performance.
11
+ config.eager_load = true
12
+
13
+ # Full error reports are disabled and caching is turned on.
8
14
  config.consider_all_requests_local = false
9
15
  config.action_controller.perform_caching = true
10
16
 
11
- # Disable Rails's static asset server (Apache or nginx will already do this)
17
+ # Enable Rack::Cache to put a simple HTTP cache in front of your application
18
+ # Add `rack-cache` to your Gemfile before enabling this.
19
+ # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
20
+ # config.action_dispatch.rack_cache = true
21
+
22
+ # Disable Rails's static asset server (Apache or nginx will already do this).
12
23
  config.serve_static_assets = false
13
24
 
14
- # Compress JavaScripts and CSS
15
- config.assets.compress = true
25
+ # Compress JavaScripts and CSS.
26
+ config.assets.js_compressor = :uglifier
27
+ # config.assets.css_compressor = :sass
16
28
 
17
- # Don't fallback to assets pipeline if a precompiled asset is missed
29
+ # Do not fallback to assets pipeline if a precompiled asset is missed.
18
30
  config.assets.compile = false
19
31
 
20
- # Generate digests for assets URLs
32
+ # Generate digests for assets URLs.
21
33
  config.assets.digest = true
22
34
 
23
- # Defaults to Rails.root.join("public/assets")
24
- # config.assets.manifest = YOUR_PATH
35
+ # `config.assets.precompile` has moved to config/initializers/assets.rb
25
36
 
26
- # Specifies the header that your server uses for sending files
37
+ # Specifies the header that your server uses for sending files.
27
38
  # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
28
39
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
29
40
 
30
41
  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
31
42
  # config.force_ssl = true
32
43
 
33
- # See everything in the log (default is :info)
34
- # config.log_level = :debug
44
+ # Set to :debug to see everything in the log.
45
+ config.log_level = :info
35
46
 
36
- # Prepend all log lines with the following tags
47
+ # Prepend all log lines with the following tags.
37
48
  # config.log_tags = [ :subdomain, :uuid ]
38
49
 
39
- # Use a different logger for distributed setups
50
+ # Use a different logger for distributed setups.
40
51
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
41
52
 
42
- # Use a different cache store in production
53
+ # Use a different cache store in production.
43
54
  # config.cache_store = :mem_cache_store
44
55
 
45
- # Enable serving of images, stylesheets, and JavaScripts from an asset server
56
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server.
46
57
  # config.action_controller.asset_host = "http://assets.example.com"
47
58
 
48
- # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
59
+ # Precompile additional assets.
60
+ # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
49
61
  # config.assets.precompile += %w( search.js )
50
62
 
51
- # Disable delivery errors, bad email addresses will be ignored
63
+ # Ignore bad email addresses and do not raise email delivery errors.
64
+ # Set this to true and configure the email server for immediate delivery to raise delivery errors.
52
65
  # config.action_mailer.raise_delivery_errors = false
53
66
 
54
- # Enable threaded mode
55
- # config.threadsafe!
56
-
57
67
  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
58
- # the I18n.default_locale when a translation can not be found)
68
+ # the I18n.default_locale when a translation cannot be found).
59
69
  config.i18n.fallbacks = true
60
70
 
61
- # Send deprecation notices to registered listeners
71
+ # Send deprecation notices to registered listeners.
62
72
  config.active_support.deprecation = :notify
63
73
 
64
- # Log the query plan for queries taking more than this (works
65
- # with SQLite, MySQL, and PostgreSQL)
66
- # config.active_record.auto_explain_threshold_in_seconds = 0.5
67
- config.eager_load = true
74
+ # Disable automatic flushing of the log to improve performance.
75
+ # config.autoflush_log = false
76
+
77
+ # Use default logging formatter so that PID and timestamp are not suppressed.
78
+ config.log_formatter = ::Logger::Formatter.new
79
+
80
+ # Do not dump schema after migrations.
81
+ config.active_record.dump_schema_after_migration = false
68
82
  end
@@ -1,5 +1,5 @@
1
- Dummy::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb
1
+ Rails.application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
4
  # The test environment is used exclusively to run your application's
5
5
  # test suite. You never need to work with it otherwise. Remember that
@@ -7,27 +7,33 @@ Dummy::Application.configure do
7
7
  # and recreated between test runs. Don't rely on the data there!
8
8
  config.cache_classes = true
9
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"
10
+ # Do not eager load code on boot. This avoids loading your whole application
11
+ # just for the purpose of running a single test. If you are using a tool that
12
+ # preloads Rails for running tests, you may have to set it to true.
13
+ config.eager_load = false
14
+
15
+ # Configure static asset server for tests with Cache-Control for performance.
16
+ config.serve_static_assets = true
17
+ config.static_cache_control = 'public, max-age=3600'
13
18
 
14
- # Show full error reports and disable caching
19
+ # Show full error reports and disable caching.
15
20
  config.consider_all_requests_local = true
16
21
  config.action_controller.perform_caching = false
17
22
 
18
- # Raise exceptions instead of rendering exception templates
23
+ # Raise exceptions instead of rendering exception templates.
19
24
  config.action_dispatch.show_exceptions = false
20
25
 
21
- # Disable request forgery protection in test environment
22
- config.action_controller.allow_forgery_protection = false
26
+ # Disable request forgery protection in test environment.
27
+ config.action_controller.allow_forgery_protection = false
23
28
 
24
29
  # Tell Action Mailer not to deliver emails to the real world.
25
30
  # The :test delivery method accumulates sent emails in the
26
31
  # ActionMailer::Base.deliveries array.
27
32
  config.action_mailer.delivery_method = :test
28
33
 
29
- # Print deprecation notices to the stderr
34
+ # Print deprecation notices to the stderr.
30
35
  config.active_support.deprecation = :stderr
31
36
 
32
- config.eager_load = false
37
+ # Raises error for missing translations
38
+ # config.action_view.raise_on_missing_translations = true
33
39
  end
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Version of your assets, change this if you want to expire all your assets.
4
+ Rails.application.config.assets.version = '1.0'
5
+
6
+ # Precompile additional assets.
7
+ # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
8
+ # Rails.application.config.assets.precompile += %w( search.js )
@@ -0,0 +1,3 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Rails.application.config.action_dispatch.cookies_serializer = :marshal
@@ -0,0 +1,4 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Configure sensitive parameters which will be filtered from the log file.
4
+ Rails.application.config.filter_parameters += [:password]
@@ -1,15 +1,16 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
- # Add new inflection rules using the following format
4
- # (all these examples are active by default):
5
- # ActiveSupport::Inflector.inflections do |inflect|
3
+ # Add new inflection rules using the following format. Inflections
4
+ # are locale specific, and you may define rules for as many different
5
+ # locales as you wish. All of these examples are active by default:
6
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
6
7
  # inflect.plural /^(ox)$/i, '\1en'
7
8
  # inflect.singular /^(ox)en/i, '\1'
8
9
  # inflect.irregular 'person', 'people'
9
10
  # inflect.uncountable %w( fish sheep )
10
11
  # end
11
- #
12
+
12
13
  # These inflection rules are supported but not enabled by default:
13
- # ActiveSupport::Inflector.inflections do |inflect|
14
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
14
15
  # inflect.acronym 'RESTful'
15
16
  # end
@@ -2,4 +2,3 @@
2
2
 
3
3
  # Add new mime types for use in respond_to blocks:
4
4
  # Mime::Type.register "text/richtext", :rtf
5
- # Mime::Type.register_alias "text/html", :iphone
@@ -1,8 +1,3 @@
1
1
  # Be sure to restart your server when you modify this file.
2
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
3
+ Rails.application.config.session_store :cookie_store, key: '_dummy_session'
@@ -1,14 +1,14 @@
1
1
  # Be sure to restart your server when you modify this file.
2
- #
2
+
3
3
  # This file contains settings for ActionController::ParamsWrapper which
4
4
  # is enabled by default.
5
5
 
6
6
  # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
7
  ActiveSupport.on_load(:action_controller) do
8
- wrap_parameters format: [:json]
8
+ wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
9
9
  end
10
10
 
11
- # Disable root element in JSON by default.
12
- ActiveSupport.on_load(:active_record) do
13
- self.include_root_in_json = false
14
- end
11
+ # To enable root element in JSON for ActiveRecord objects.
12
+ # ActiveSupport.on_load(:active_record) do
13
+ # self.include_root_in_json = true
14
+ # end
@@ -1,5 +1,23 @@
1
- # Sample localization file for English. Add more files in this directory for other locales.
2
- # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
3
21
 
4
22
  en:
5
23
  hello: "Hello world"
@@ -1,4 +1,3 @@
1
1
  Rails.application.routes.draw do
2
-
3
2
  mount Crowdblog::Engine => '/'
4
3
  end
@@ -0,0 +1,22 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: 6a441d70d11746af3ab8ec4ae145c09a7075323d768af04fe6bd1abc477f85840b4d734bffb833e045178d03e883b3650bf3bfe2a9995ce6efdaf1bd4900a0c1
15
+
16
+ test:
17
+ secret_key_base: a21663c921f987339b3f60d00605da9f7243405e6d0e1fa89ac0aa6de255cfb9488bfe3742cef8d2b1aef436cd0c2b73d528ab502bf3d531dca74f7185ea67b8
18
+
19
+ # Do not keep production secrets in the repository,
20
+ # instead read values from the environment.
21
+ production:
22
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20121016063750) do
14
+ ActiveRecord::Schema.define(:version => 20140501164642) do
15
15
 
16
16
  create_table "crowdblog_assets", force: true do |t|
17
17
  t.integer "post_id"
@@ -34,7 +34,15 @@ ActiveRecord::Schema.define(version: 20121016063750) do
34
34
  t.datetime "updated_at"
35
35
  end
36
36
 
37
- create_table "users", force: true do |t|
37
+ create_table "crowdblog_status_change_records", :force => true do |t|
38
+ t.integer "user_id"
39
+ t.integer "post_id"
40
+ t.string "state"
41
+ t.datetime "created_at", :null => false
42
+ t.datetime "updated_at", :null => false
43
+ end
44
+
45
+ create_table "users", :force => true do |t|
38
46
  t.string "email"
39
47
  t.string "name"
40
48
  end
@@ -42,11 +42,11 @@ module Crowdblog
42
42
  end
43
43
 
44
44
  describe '#self.scoped_for' do
45
- let(:user) { mock(is_publisher?: true) }
45
+ let(:user) { double(is_publisher?: true) }
46
46
 
47
47
  context 'user is publisher' do
48
48
  it 'should see all the Posts' do
49
- Post.scoped_for(user).should == Post.scoped
49
+ Post.scoped_for(user).should == Post.all
50
50
  end
51
51
  end
52
52
 
@@ -68,7 +68,7 @@ module Crowdblog
68
68
  end
69
69
 
70
70
  it "returns false" do
71
- subject.allowed_to_update_permalink?.should be_false
71
+ subject.allowed_to_update_permalink?.should be_falsey
72
72
  end
73
73
  end
74
74
 
@@ -78,7 +78,7 @@ module Crowdblog
78
78
  end
79
79
 
80
80
  it "returns true" do
81
- subject.allowed_to_update_permalink?.should be_true
81
+ subject.allowed_to_update_permalink?.should be_truthy
82
82
  end
83
83
  end
84
84
  end
@@ -5,9 +5,11 @@ ENV["RAILS_ENV"] ||= 'test'
5
5
  require File.expand_path("../dummy/config/environment", __FILE__)
6
6
  require 'rspec/rails'
7
7
  require 'rspec/autorun'
8
+ require 'rspec/active_model/mocks'
8
9
  require 'capybara/rspec'
9
10
  require 'crowdblog/rspec'
10
11
  require 'database_cleaner'
12
+ require 'coffee_script'
11
13
 
12
14
  ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')
13
15
 
@@ -40,6 +42,8 @@ RSpec.configure do |config|
40
42
  # Include Engine routes (needed for Controller specs)
41
43
  config.include Crowdblog::Engine.routes.url_helpers
42
44
 
45
+ config.include Capybara::DSL
46
+
43
47
  config.before(:suite) do
44
48
  DatabaseCleaner.strategy = :truncation
45
49
  DatabaseCleaner.clean_with(:truncation)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crowdblog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Crowd Interactive
@@ -9,233 +9,248 @@ authors:
9
9
  - Chalo Fernandez
10
10
  - Ignacio Galindo
11
11
  - Nora Alvarado
12
+ - Mario Chavez
12
13
  autorequire:
13
14
  bindir: bin
14
15
  cert_chain: []
15
- date: 2013-11-06 00:00:00.000000000 Z
16
+ date: 2014-09-01 00:00:00.000000000 Z
16
17
  dependencies:
17
18
  - !ruby/object:Gem::Dependency
18
19
  name: rails
19
20
  requirement: !ruby/object:Gem::Requirement
20
21
  requirements:
21
- - - ~>
22
+ - - "~>"
22
23
  - !ruby/object:Gem::Version
23
- version: 4.0.0
24
+ version: 4.1.0
24
25
  type: :runtime
25
26
  prerelease: false
26
27
  version_requirements: !ruby/object:Gem::Requirement
27
28
  requirements:
28
- - - ~>
29
+ - - "~>"
29
30
  - !ruby/object:Gem::Version
30
- version: 4.0.0
31
+ version: 4.1.0
31
32
  - !ruby/object:Gem::Dependency
32
33
  name: carrierwave
33
34
  requirement: !ruby/object:Gem::Requirement
34
35
  requirements:
35
- - - ~>
36
+ - - "~>"
36
37
  - !ruby/object:Gem::Version
37
- version: 0.9.0
38
+ version: 0.10.0
38
39
  type: :runtime
39
40
  prerelease: false
40
41
  version_requirements: !ruby/object:Gem::Requirement
41
42
  requirements:
42
- - - ~>
43
+ - - "~>"
43
44
  - !ruby/object:Gem::Version
44
- version: 0.9.0
45
+ version: 0.10.0
45
46
  - !ruby/object:Gem::Dependency
46
47
  name: gravtastic
47
48
  requirement: !ruby/object:Gem::Requirement
48
49
  requirements:
49
- - - ~>
50
+ - - "~>"
50
51
  - !ruby/object:Gem::Version
51
52
  version: 3.2.6
52
53
  type: :runtime
53
54
  prerelease: false
54
55
  version_requirements: !ruby/object:Gem::Requirement
55
56
  requirements:
56
- - - ~>
57
+ - - "~>"
57
58
  - !ruby/object:Gem::Version
58
59
  version: 3.2.6
59
60
  - !ruby/object:Gem::Dependency
60
61
  name: jquery-rails
61
62
  requirement: !ruby/object:Gem::Requirement
62
63
  requirements:
63
- - - '>='
64
+ - - ">="
64
65
  - !ruby/object:Gem::Version
65
66
  version: '0'
66
67
  type: :runtime
67
68
  prerelease: false
68
69
  version_requirements: !ruby/object:Gem::Requirement
69
70
  requirements:
70
- - - '>='
71
+ - - ">="
71
72
  - !ruby/object:Gem::Version
72
73
  version: '0'
73
74
  - !ruby/object:Gem::Dependency
74
75
  name: jbuilder
75
76
  requirement: !ruby/object:Gem::Requirement
76
77
  requirements:
77
- - - '>='
78
+ - - ">="
78
79
  - !ruby/object:Gem::Version
79
80
  version: '0'
80
81
  type: :runtime
81
82
  prerelease: false
82
83
  version_requirements: !ruby/object:Gem::Requirement
83
84
  requirements:
84
- - - '>='
85
+ - - ">="
85
86
  - !ruby/object:Gem::Version
86
87
  version: '0'
87
88
  - !ruby/object:Gem::Dependency
88
89
  name: redcarpet
89
90
  requirement: !ruby/object:Gem::Requirement
90
91
  requirements:
91
- - - ~>
92
+ - - "~>"
92
93
  - !ruby/object:Gem::Version
93
- version: 3.0.0
94
+ version: 3.1.0
94
95
  type: :runtime
95
96
  prerelease: false
96
97
  version_requirements: !ruby/object:Gem::Requirement
97
98
  requirements:
98
- - - ~>
99
+ - - "~>"
99
100
  - !ruby/object:Gem::Version
100
- version: 3.0.0
101
+ version: 3.1.0
101
102
  - !ruby/object:Gem::Dependency
102
103
  name: slim
103
104
  requirement: !ruby/object:Gem::Requirement
104
105
  requirements:
105
- - - ~>
106
+ - - "~>"
106
107
  - !ruby/object:Gem::Version
107
- version: 2.0.2
108
+ version: 2.0.0
108
109
  type: :runtime
109
110
  prerelease: false
110
111
  version_requirements: !ruby/object:Gem::Requirement
111
112
  requirements:
112
- - - ~>
113
+ - - "~>"
113
114
  - !ruby/object:Gem::Version
114
- version: 2.0.2
115
+ version: 2.0.0
115
116
  - !ruby/object:Gem::Dependency
116
117
  name: state_machine
117
118
  requirement: !ruby/object:Gem::Requirement
118
119
  requirements:
119
- - - ~>
120
+ - - "~>"
120
121
  - !ruby/object:Gem::Version
121
122
  version: 1.2.0
122
123
  type: :runtime
123
124
  prerelease: false
124
125
  version_requirements: !ruby/object:Gem::Requirement
125
126
  requirements:
126
- - - ~>
127
+ - - "~>"
127
128
  - !ruby/object:Gem::Version
128
129
  version: 1.2.0
129
130
  - !ruby/object:Gem::Dependency
130
131
  name: capybara-webkit
131
132
  requirement: !ruby/object:Gem::Requirement
132
133
  requirements:
133
- - - ~>
134
+ - - "~>"
134
135
  - !ruby/object:Gem::Version
135
136
  version: 1.0.0
136
137
  type: :development
137
138
  prerelease: false
138
139
  version_requirements: !ruby/object:Gem::Requirement
139
140
  requirements:
140
- - - ~>
141
+ - - "~>"
141
142
  - !ruby/object:Gem::Version
142
143
  version: 1.0.0
143
144
  - !ruby/object:Gem::Dependency
144
145
  name: database_cleaner
145
146
  requirement: !ruby/object:Gem::Requirement
146
147
  requirements:
147
- - - '>='
148
+ - - "~>"
148
149
  - !ruby/object:Gem::Version
149
- version: '0'
150
+ version: 1.3.0
150
151
  type: :development
151
152
  prerelease: false
152
153
  version_requirements: !ruby/object:Gem::Requirement
153
154
  requirements:
154
- - - '>='
155
+ - - "~>"
155
156
  - !ruby/object:Gem::Version
156
- version: '0'
157
+ version: 1.3.0
157
158
  - !ruby/object:Gem::Dependency
158
159
  name: fuubar
159
160
  requirement: !ruby/object:Gem::Requirement
160
161
  requirements:
161
- - - '>='
162
+ - - ">="
162
163
  - !ruby/object:Gem::Version
163
164
  version: '0'
164
165
  type: :development
165
166
  prerelease: false
166
167
  version_requirements: !ruby/object:Gem::Requirement
167
168
  requirements:
168
- - - '>='
169
+ - - ">="
169
170
  - !ruby/object:Gem::Version
170
171
  version: '0'
171
172
  - !ruby/object:Gem::Dependency
172
173
  name: rspec-rails
173
174
  requirement: !ruby/object:Gem::Requirement
174
175
  requirements:
175
- - - '>='
176
+ - - ">="
176
177
  - !ruby/object:Gem::Version
177
178
  version: '0'
178
179
  type: :development
179
180
  prerelease: false
180
181
  version_requirements: !ruby/object:Gem::Requirement
181
182
  requirements:
182
- - - '>='
183
+ - - ">="
183
184
  - !ruby/object:Gem::Version
184
185
  version: '0'
185
186
  - !ruby/object:Gem::Dependency
186
- name: selenium-webdriver
187
+ name: rspec-activemodel-mocks
187
188
  requirement: !ruby/object:Gem::Requirement
188
189
  requirements:
189
- - - '>='
190
+ - - ">="
190
191
  - !ruby/object:Gem::Version
191
192
  version: '0'
192
193
  type: :development
193
194
  prerelease: false
194
195
  version_requirements: !ruby/object:Gem::Requirement
195
196
  requirements:
196
- - - '>='
197
+ - - ">="
197
198
  - !ruby/object:Gem::Version
198
199
  version: '0'
199
200
  - !ruby/object:Gem::Dependency
200
- name: simplecov
201
+ name: selenium-webdriver
201
202
  requirement: !ruby/object:Gem::Requirement
202
203
  requirements:
203
- - - '>='
204
+ - - ">="
204
205
  - !ruby/object:Gem::Version
205
206
  version: '0'
206
207
  type: :development
207
208
  prerelease: false
208
209
  version_requirements: !ruby/object:Gem::Requirement
209
210
  requirements:
210
- - - '>='
211
+ - - ">="
211
212
  - !ruby/object:Gem::Version
212
213
  version: '0'
214
+ - !ruby/object:Gem::Dependency
215
+ name: simplecov
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: 0.9.0
221
+ type: :development
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: 0.9.0
213
228
  - !ruby/object:Gem::Dependency
214
229
  name: simplecov-rcov-text
215
230
  requirement: !ruby/object:Gem::Requirement
216
231
  requirements:
217
- - - '>='
232
+ - - ">="
218
233
  - !ruby/object:Gem::Version
219
234
  version: '0'
220
235
  type: :development
221
236
  prerelease: false
222
237
  version_requirements: !ruby/object:Gem::Requirement
223
238
  requirements:
224
- - - '>='
239
+ - - ">="
225
240
  - !ruby/object:Gem::Version
226
241
  version: '0'
227
242
  - !ruby/object:Gem::Dependency
228
243
  name: sqlite3
229
244
  requirement: !ruby/object:Gem::Requirement
230
245
  requirements:
231
- - - '>='
246
+ - - ">="
232
247
  - !ruby/object:Gem::Version
233
248
  version: '0'
234
249
  type: :development
235
250
  prerelease: false
236
251
  version_requirements: !ruby/object:Gem::Requirement
237
252
  requirements:
238
- - - '>='
253
+ - - ">="
239
254
  - !ruby/object:Gem::Version
240
255
  version: '0'
241
256
  description: This mountable engine has the basic functionality to manage Posts
@@ -245,16 +260,17 @@ email:
245
260
  - chalofa@crowdint.com
246
261
  - ignacio@crowdint.com
247
262
  - nora@crowdint.com
263
+ - mario.chavez@crowdint.com
248
264
  executables: []
249
265
  extensions: []
250
266
  extra_rdoc_files: []
251
267
  files:
252
- - .autotest
253
- - .gitignore
254
- - .rspec
255
- - .rvmrc
256
- - .simplecov
257
- - .travis.yml
268
+ - ".autotest"
269
+ - ".gitignore"
270
+ - ".rspec"
271
+ - ".rvmrc"
272
+ - ".simplecov"
273
+ - ".travis.yml"
258
274
  - Gemfile
259
275
  - MIT-LICENSE
260
276
  - README.md
@@ -277,6 +293,7 @@ files:
277
293
  - app/helpers/crowdblog/application_helper.rb
278
294
  - app/models/crowdblog/asset.rb
279
295
  - app/models/crowdblog/post.rb
296
+ - app/models/crowdblog/status_change_record.rb
280
297
  - app/models/crowdblog/user.rb
281
298
  - app/presenters/crowdblog/post_presenter.rb
282
299
  - app/uploaders/attachment_uploader.rb
@@ -296,12 +313,14 @@ files:
296
313
  - app/views/layouts/crowdblog/application.html.slim
297
314
  - config/cucumber.yml
298
315
  - config/initializers/date_formats.rb
316
+ - config/initializers/state_machine.rb
299
317
  - config/locales/devise.en.yml
300
318
  - config/routes.rb
301
319
  - crowdblog.gemspec
302
320
  - db/migrate/20120217213920_create_crowdblog_posts.rb
303
321
  - db/migrate/20120219071614_create_crowdblog_assets.rb
304
322
  - db/migrate/20121016063750_create_crowdblog_users.rb
323
+ - db/migrate/20140501164642_create_crowdblog_status_change_records.rb
305
324
  - lib/crowdblog.rb
306
325
  - lib/crowdblog/devise/failure_app.rb
307
326
  - lib/crowdblog/engine.rb
@@ -325,6 +344,9 @@ files:
325
344
  - spec/dummy/app/models/user.rb
326
345
  - spec/dummy/app/views/home/show.html.slim
327
346
  - spec/dummy/app/views/layouts/application.html.erb
347
+ - spec/dummy/bin/bundle
348
+ - spec/dummy/bin/rails
349
+ - spec/dummy/bin/rake
328
350
  - spec/dummy/config.ru
329
351
  - spec/dummy/config/application.rb
330
352
  - spec/dummy/config/boot.rb
@@ -333,9 +355,12 @@ files:
333
355
  - spec/dummy/config/environments/development.rb
334
356
  - spec/dummy/config/environments/production.rb
335
357
  - spec/dummy/config/environments/test.rb
358
+ - spec/dummy/config/initializers/assets.rb
336
359
  - spec/dummy/config/initializers/backtrace_silencers.rb
337
360
  - spec/dummy/config/initializers/carrierwave.rb
361
+ - spec/dummy/config/initializers/cookies_serializer.rb
338
362
  - spec/dummy/config/initializers/crowdblog.rb
363
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
339
364
  - spec/dummy/config/initializers/inflections.rb
340
365
  - spec/dummy/config/initializers/mime_types.rb
341
366
  - spec/dummy/config/initializers/secret_token.rb
@@ -343,6 +368,7 @@ files:
343
368
  - spec/dummy/config/initializers/wrap_parameters.rb
344
369
  - spec/dummy/config/locales/en.yml
345
370
  - spec/dummy/config/routes.rb
371
+ - spec/dummy/config/secrets.yml
346
372
  - spec/dummy/db/schema.rb
347
373
  - spec/dummy/db/seed.rb
348
374
  - spec/dummy/lib/assets/.gitkeep
@@ -368,7 +394,8 @@ files:
368
394
  - vendor/assets/javascripts/markdown.js
369
395
  - vendor/assets/javascripts/uploader/jquery.html5uploader.js
370
396
  homepage: http://github.com/crowdint/crowdblog
371
- licenses: []
397
+ licenses:
398
+ - MIT
372
399
  metadata: {}
373
400
  post_install_message:
374
401
  rdoc_options: []
@@ -377,17 +404,17 @@ require_paths:
377
404
  - app
378
405
  required_ruby_version: !ruby/object:Gem::Requirement
379
406
  requirements:
380
- - - '>='
407
+ - - ">="
381
408
  - !ruby/object:Gem::Version
382
409
  version: '0'
383
410
  required_rubygems_version: !ruby/object:Gem::Requirement
384
411
  requirements:
385
- - - '>='
412
+ - - ">="
386
413
  - !ruby/object:Gem::Version
387
414
  version: '0'
388
415
  requirements: []
389
416
  rubyforge_project:
390
- rubygems_version: 2.0.3
417
+ rubygems_version: 2.2.0
391
418
  signing_key:
392
419
  specification_version: 4
393
420
  summary: CrowdBlog base functionality and backend
@@ -404,6 +431,9 @@ test_files:
404
431
  - spec/dummy/app/models/user.rb
405
432
  - spec/dummy/app/views/home/show.html.slim
406
433
  - spec/dummy/app/views/layouts/application.html.erb
434
+ - spec/dummy/bin/bundle
435
+ - spec/dummy/bin/rails
436
+ - spec/dummy/bin/rake
407
437
  - spec/dummy/config.ru
408
438
  - spec/dummy/config/application.rb
409
439
  - spec/dummy/config/boot.rb
@@ -412,9 +442,12 @@ test_files:
412
442
  - spec/dummy/config/environments/development.rb
413
443
  - spec/dummy/config/environments/production.rb
414
444
  - spec/dummy/config/environments/test.rb
445
+ - spec/dummy/config/initializers/assets.rb
415
446
  - spec/dummy/config/initializers/backtrace_silencers.rb
416
447
  - spec/dummy/config/initializers/carrierwave.rb
448
+ - spec/dummy/config/initializers/cookies_serializer.rb
417
449
  - spec/dummy/config/initializers/crowdblog.rb
450
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
418
451
  - spec/dummy/config/initializers/inflections.rb
419
452
  - spec/dummy/config/initializers/mime_types.rb
420
453
  - spec/dummy/config/initializers/secret_token.rb
@@ -422,6 +455,7 @@ test_files:
422
455
  - spec/dummy/config/initializers/wrap_parameters.rb
423
456
  - spec/dummy/config/locales/en.yml
424
457
  - spec/dummy/config/routes.rb
458
+ - spec/dummy/config/secrets.yml
425
459
  - spec/dummy/db/schema.rb
426
460
  - spec/dummy/db/seed.rb
427
461
  - spec/dummy/lib/assets/.gitkeep