publish 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "rails", "3.0.5"
3
+ gem "rails", "3.0.9"
4
4
  gem "capybara", ">= 0.4.0"
5
5
 
6
6
  gem 'simplecov', :require => false
@@ -8,6 +8,8 @@ gem 'factory_girl_rails'
8
8
  gem 'ffaker'
9
9
  gem 'colorific'
10
10
 
11
+ gem "mongoid"
12
+
11
13
  # To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
12
14
  # gem 'ruby-debug'
13
15
  # gem 'ruby-debug19'
data/Gemfile.lock CHANGED
@@ -2,42 +2,41 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  publish (0.0.1)
5
- bson_ext (~> 1.3.0)
6
- mongoid (~> 2.0.1)
5
+ bson_ext (~> 1.3)
7
6
 
8
7
  GEM
9
8
  remote: http://rubygems.org/
10
9
  specs:
11
10
  abstract (1.0.0)
12
- actionmailer (3.0.5)
13
- actionpack (= 3.0.5)
14
- mail (~> 2.2.15)
15
- actionpack (3.0.5)
16
- activemodel (= 3.0.5)
17
- activesupport (= 3.0.5)
11
+ actionmailer (3.0.9)
12
+ actionpack (= 3.0.9)
13
+ mail (~> 2.2.19)
14
+ actionpack (3.0.9)
15
+ activemodel (= 3.0.9)
16
+ activesupport (= 3.0.9)
18
17
  builder (~> 2.1.2)
19
18
  erubis (~> 2.6.6)
20
- i18n (~> 0.4)
19
+ i18n (~> 0.5.0)
21
20
  rack (~> 1.2.1)
22
- rack-mount (~> 0.6.13)
21
+ rack-mount (~> 0.6.14)
23
22
  rack-test (~> 0.5.7)
24
23
  tzinfo (~> 0.3.23)
25
- activemodel (3.0.5)
26
- activesupport (= 3.0.5)
24
+ activemodel (3.0.9)
25
+ activesupport (= 3.0.9)
27
26
  builder (~> 2.1.2)
28
- i18n (~> 0.4)
29
- activerecord (3.0.5)
30
- activemodel (= 3.0.5)
31
- activesupport (= 3.0.5)
32
- arel (~> 2.0.2)
27
+ i18n (~> 0.5.0)
28
+ activerecord (3.0.9)
29
+ activemodel (= 3.0.9)
30
+ activesupport (= 3.0.9)
31
+ arel (~> 2.0.10)
33
32
  tzinfo (~> 0.3.23)
34
- activeresource (3.0.5)
35
- activemodel (= 3.0.5)
36
- activesupport (= 3.0.5)
37
- activesupport (3.0.5)
38
- arel (2.0.9)
39
- bson (1.3.0)
40
- bson_ext (1.3.0)
33
+ activeresource (3.0.9)
34
+ activemodel (= 3.0.9)
35
+ activesupport (= 3.0.9)
36
+ activesupport (3.0.9)
37
+ arel (2.0.10)
38
+ bson (1.3.1)
39
+ bson_ext (1.3.1)
41
40
  builder (2.1.2)
42
41
  capybara (0.4.1.2)
43
42
  celerity (>= 0.7.9)
@@ -66,41 +65,42 @@ GEM
66
65
  rake (>= 0.8.7)
67
66
  i18n (0.5.0)
68
67
  json_pure (1.5.1)
69
- mail (2.2.15)
68
+ mail (2.2.19)
70
69
  activesupport (>= 2.3.6)
71
70
  i18n (>= 0.4.0)
72
71
  mime-types (~> 1.16)
73
72
  treetop (~> 1.4.8)
74
73
  mime-types (1.16)
75
74
  minitest (2.0.2)
76
- mongo (1.3.0)
77
- bson (>= 1.3.0)
78
- mongoid (2.0.1)
75
+ mongo (1.3.1)
76
+ bson (>= 1.3.1)
77
+ mongoid (2.0.2)
79
78
  activemodel (~> 3.0)
80
79
  mongo (~> 1.3)
81
80
  tzinfo (~> 0.3.22)
82
- will_paginate (~> 3.0.pre)
83
81
  nokogiri (1.4.4)
84
82
  polyglot (0.3.1)
85
- rack (1.2.2)
83
+ rack (1.2.3)
86
84
  rack-mount (0.6.14)
87
85
  rack (>= 1.0.0)
88
86
  rack-test (0.5.7)
89
87
  rack (>= 1.0)
90
- rails (3.0.5)
91
- actionmailer (= 3.0.5)
92
- actionpack (= 3.0.5)
93
- activerecord (= 3.0.5)
94
- activeresource (= 3.0.5)
95
- activesupport (= 3.0.5)
88
+ rails (3.0.9)
89
+ actionmailer (= 3.0.9)
90
+ actionpack (= 3.0.9)
91
+ activerecord (= 3.0.9)
92
+ activeresource (= 3.0.9)
93
+ activesupport (= 3.0.9)
96
94
  bundler (~> 1.0)
97
- railties (= 3.0.5)
98
- railties (3.0.5)
99
- actionpack (= 3.0.5)
100
- activesupport (= 3.0.5)
95
+ railties (= 3.0.9)
96
+ railties (3.0.9)
97
+ actionpack (= 3.0.9)
98
+ activesupport (= 3.0.9)
101
99
  rake (>= 0.8.7)
100
+ rdoc (~> 3.4)
102
101
  thor (~> 0.14.4)
103
- rake (0.8.7)
102
+ rake (0.9.2)
103
+ rdoc (3.8)
104
104
  ruby-progressbar (0.0.9)
105
105
  rubyzip (0.9.4)
106
106
  selenium-webdriver (0.1.4)
@@ -114,8 +114,7 @@ GEM
114
114
  thor (0.14.6)
115
115
  treetop (1.4.9)
116
116
  polyglot (>= 0.3.1)
117
- tzinfo (0.3.25)
118
- will_paginate (3.0.pre2)
117
+ tzinfo (0.3.29)
119
118
  xpath (0.1.3)
120
119
  nokogiri (~> 1.3)
121
120
 
@@ -127,6 +126,7 @@ DEPENDENCIES
127
126
  colorific
128
127
  factory_girl_rails
129
128
  ffaker
129
+ mongoid
130
130
  publish!
131
- rails (= 3.0.5)
131
+ rails (= 3.0.9)
132
132
  simplecov
data/README.rdoc CHANGED
@@ -7,7 +7,7 @@ Now, supports just Mongoid. Support to Activerecord is comming soon.
7
7
 
8
8
  Add to Gemfile
9
9
 
10
- gem 'publish', :git => 'git://github.com/lucasrenan/publish.git'
10
+ gem 'publish', '0.0.1'
11
11
 
12
12
  Then run
13
13
 
@@ -32,9 +32,10 @@ Include Publish Module to your model
32
32
  p.published? #false
33
33
  p.published_at #nil
34
34
 
35
- p.published = true
36
- p.save
35
+ p.publish! #p.published = true
37
36
 
38
37
  p.published? #true
39
38
 
40
- Post.published.count #1
39
+ Post.published.count #1
40
+
41
+ p.publication_status #Date.today or 'draft'
@@ -5,6 +5,8 @@ module Mongoid
5
5
  included do
6
6
  field :published_at, :type => Date
7
7
  field :published, :type => Boolean, :default => false
8
+
9
+ scope :published, where(:published => true, :published_at.lte => Date.today).desc(:published_at, :created_at)
8
10
 
9
11
  before_save :set_published_at
10
12
  end
@@ -23,6 +25,10 @@ module Mongoid
23
25
  self.published_at = Date.today
24
26
  self.save
25
27
  end
28
+
29
+ def publication_status
30
+ self.published? ? self.published_at : "draft"
31
+ end
26
32
 
27
33
  private
28
34
  def set_published_at
@@ -31,9 +37,6 @@ module Mongoid
31
37
  end
32
38
 
33
39
  module ClassMethods
34
- def published
35
- where(:published => true, :published_at.lte => Date.today).desc(:published_at, :created_at)
36
- end
37
40
  end
38
41
 
39
42
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Publish
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
data/publish.gemspec CHANGED
@@ -20,6 +20,6 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  #s.add_dependency 'activesupport', '~> 3.0.5'
23
- s.add_dependency 'mongoid', '~> 2.0.1'
24
- s.add_dependency 'bson_ext', '~> 1.3.0'
23
+ #s.add_dependency 'mongoid', '~> 2.0.1'
24
+ s.add_dependency 'bson_ext', '~> 1.3'
25
25
  end
@@ -0,0 +1,83 @@
1
+ class PostsController < ApplicationController
2
+ # GET /posts
3
+ # GET /posts.xml
4
+ def index
5
+ @posts = Post.all
6
+
7
+ respond_to do |format|
8
+ format.html # index.html.erb
9
+ format.xml { render :xml => @posts }
10
+ end
11
+ end
12
+
13
+ # GET /posts/1
14
+ # GET /posts/1.xml
15
+ def show
16
+ @post = Post.find(params[:id])
17
+
18
+ respond_to do |format|
19
+ format.html # show.html.erb
20
+ format.xml { render :xml => @post }
21
+ end
22
+ end
23
+
24
+ # GET /posts/new
25
+ # GET /posts/new.xml
26
+ def new
27
+ @post = Post.new
28
+
29
+ respond_to do |format|
30
+ format.html # new.html.erb
31
+ format.xml { render :xml => @post }
32
+ end
33
+ end
34
+
35
+ # GET /posts/1/edit
36
+ def edit
37
+ @post = Post.find(params[:id])
38
+ end
39
+
40
+ # POST /posts
41
+ # POST /posts.xml
42
+ def create
43
+ @post = Post.new(params[:post])
44
+
45
+ respond_to do |format|
46
+ if @post.save
47
+ format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
48
+ format.xml { render :xml => @post, :status => :created, :location => @post }
49
+ else
50
+ format.html { render :action => "new" }
51
+ format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
52
+ end
53
+ end
54
+ end
55
+
56
+ # PUT /posts/1
57
+ # PUT /posts/1.xml
58
+ def update
59
+ @post = Post.find(params[:id])
60
+
61
+ respond_to do |format|
62
+ if @post.update_attributes(params[:post])
63
+ format.html { redirect_to(@post, :notice => 'Post was successfully updated.') }
64
+ format.xml { head :ok }
65
+ else
66
+ format.html { render :action => "edit" }
67
+ format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
68
+ end
69
+ end
70
+ end
71
+
72
+ # DELETE /posts/1
73
+ # DELETE /posts/1.xml
74
+ def destroy
75
+ @post = Post.find(params[:id])
76
+ @post.destroy
77
+
78
+ respond_to do |format|
79
+ format.html { redirect_to(posts_url) }
80
+ format.xml { head :ok }
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,2 @@
1
+ module PostsHelper
2
+ end
@@ -0,0 +1,36 @@
1
+ <%= form_for(@post) do |f| %>
2
+ <% if @post.errors.any? %>
3
+ <div id="error_explanation">
4
+ <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
5
+
6
+ <ul>
7
+ <% @post.errors.full_messages.each do |msg| %>
8
+ <li><%= msg %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div class="field">
15
+ <%= f.label :title %><br />
16
+ <%= f.text_field :title %>
17
+ </div>
18
+ <div class="field">
19
+ <%= f.label :text %><br />
20
+ <%= f.text_area :text %>
21
+ </div>
22
+ <div class="field">
23
+ <label>Status</label><br />
24
+ <%= f.radio_button :published, false %><%= f.label :published, " draft", :value => false %>
25
+ <br />
26
+ <%= f.radio_button :published, true %><%= f.label :published, " published", :value => true %>
27
+ </div>
28
+ <div class="field">
29
+ <%= f.label :published_at %><br />
30
+ <%= f.text_field :published_at %>
31
+ </div>
32
+
33
+ <div class="actions">
34
+ <%= f.submit %>
35
+ </div>
36
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Editing post</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Show', @post %> |
6
+ <%= link_to 'Back', posts_path %>
@@ -0,0 +1,27 @@
1
+ <h1>Listing posts</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th>Title</th>
6
+ <th>Text</th>
7
+ <th>Status</th>
8
+ <th></th>
9
+ <th></th>
10
+ <th></th>
11
+ </tr>
12
+
13
+ <% @posts.each do |post| %>
14
+ <tr>
15
+ <td><%= post.title %></td>
16
+ <td><%= post.text %></td>
17
+ <td><%= post.publication_status %></td>
18
+ <td><%= link_to 'Show', post %></td>
19
+ <td><%= link_to 'Edit', edit_post_path(post) %></td>
20
+ <td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %></td>
21
+ </tr>
22
+ <% end %>
23
+ </table>
24
+
25
+ <br />
26
+
27
+ <%= link_to 'New Post', new_post_path %>
@@ -0,0 +1,5 @@
1
+ <h1>New post</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Back', posts_path %>
@@ -0,0 +1,22 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <p>
4
+ <b>Title:</b>
5
+ <%= @post.title %>
6
+ </p>
7
+
8
+ <p>
9
+ <b>Text:</b>
10
+ <%= @post.text %>
11
+ </p>
12
+
13
+ <% if @post.published? %>
14
+ <p>
15
+ <b>Published at:</b>
16
+ <%= @post.published_at %>
17
+ </p>
18
+ <% end %>
19
+
20
+
21
+ <%= link_to 'Edit', edit_post_path(@post) %> |
22
+ <%= link_to 'Back', posts_path %>
@@ -1,58 +1,5 @@
1
1
  Dummy::Application.routes.draw do
2
- # The priority is based upon order of creation:
3
- # first created -> highest priority.
4
-
5
- # Sample of regular route:
6
- # match 'products/:id' => 'catalog#view'
7
- # Keep in mind you can assign values other than :controller and :action
8
-
9
- # Sample of named route:
10
- # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
11
- # This route can be invoked with purchase_url(:id => product.id)
12
-
13
- # Sample resource route (maps HTTP verbs to controller actions automatically):
14
- # resources :products
15
-
16
- # Sample resource route with options:
17
- # resources :products do
18
- # member do
19
- # get 'short'
20
- # post 'toggle'
21
- # end
22
- #
23
- # collection do
24
- # get 'sold'
25
- # end
26
- # end
27
-
28
- # Sample resource route with sub-resources:
29
- # resources :products do
30
- # resources :comments, :sales
31
- # resource :seller
32
- # end
33
-
34
- # Sample resource route with more complex sub-resources
35
- # resources :products do
36
- # resources :comments
37
- # resources :sales do
38
- # get 'recent', :on => :collection
39
- # end
40
- # end
41
-
42
- # Sample resource route within a namespace:
43
- # namespace :admin do
44
- # # Directs /admin/products/* to Admin::ProductsController
45
- # # (app/controllers/admin/products_controller.rb)
46
- # resources :products
47
- # end
48
-
49
- # You can have the root of your site routed with "root"
50
- # just remember to delete public/index.html.
51
- # root :to => "welcome#index"
52
-
53
- # See how all your routes lay out with "rake routes"
54
-
55
- # This is a legacy wild controller route that's not recommended for RESTful applications.
56
- # Note: This route will make all actions in every controller accessible via GET requests.
57
- # match ':controller(/:action(/:id(.:format)))'
58
- end
2
+ resources :posts
3
+
4
+ root :to => "posts#index"
5
+ end
@@ -0,0 +1,56 @@
1
+ body { background-color: #fff; color: #333; }
2
+
3
+ body, p, ol, ul, td {
4
+ font-family: verdana, arial, helvetica, sans-serif;
5
+ font-size: 13px;
6
+ line-height: 18px;
7
+ }
8
+
9
+ pre {
10
+ background-color: #eee;
11
+ padding: 10px;
12
+ font-size: 11px;
13
+ }
14
+
15
+ a { color: #000; }
16
+ a:visited { color: #666; }
17
+ a:hover { color: #fff; background-color:#000; }
18
+
19
+ div.field, div.actions {
20
+ margin-bottom: 10px;
21
+ }
22
+
23
+ #notice {
24
+ color: green;
25
+ }
26
+
27
+ .field_with_errors {
28
+ padding: 2px;
29
+ background-color: red;
30
+ display: table;
31
+ }
32
+
33
+ #error_explanation {
34
+ width: 450px;
35
+ border: 2px solid red;
36
+ padding: 7px;
37
+ padding-bottom: 0;
38
+ margin-bottom: 20px;
39
+ background-color: #f0f0f0;
40
+ }
41
+
42
+ #error_explanation h2 {
43
+ text-align: left;
44
+ font-weight: bold;
45
+ padding: 5px 5px 5px 15px;
46
+ font-size: 12px;
47
+ margin: -7px;
48
+ margin-bottom: 0px;
49
+ background-color: #c00;
50
+ color: #fff;
51
+ }
52
+
53
+ #error_explanation ul li {
54
+ font-size: 12px;
55
+ list-style: square;
56
+ }
@@ -46,5 +46,23 @@ class PostTest < ActiveSupport::TestCase
46
46
  assert post.published?
47
47
  assert_equal Post.published.size, 1
48
48
  end
49
+
50
+ test "should concat with criteria methods" do
51
+ Factory.create(:post, :published => true, :title => "normal post")
52
+ Factory.create(:post, :published => true, :title => "my special post")
53
+
54
+ assert_equal Post.where(:title => /special/).published.count, 1
55
+ assert_equal Post.published.where(:title => /special/).count, 1
56
+ end
57
+
58
+ test "should return publication status as draft if is not published yet" do
59
+ assert_equal Post.last.publication_status, "draft"
60
+ end
61
+
62
+ test "should return published at date if is published" do
63
+ @post.publish!
64
+
65
+ assert_equal Post.last.publication_status, Date.today
66
+ end
49
67
 
50
68
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: publish
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Lucas Renan
@@ -11,31 +11,19 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-04-13 00:00:00 -03:00
15
- default_executable:
14
+ date: 2011-08-31 00:00:00 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
- name: mongoid
17
+ name: bson_ext
19
18
  prerelease: false
20
19
  requirement: &id001 !ruby/object:Gem::Requirement
21
20
  none: false
22
21
  requirements:
23
22
  - - ~>
24
23
  - !ruby/object:Gem::Version
25
- version: 2.0.1
24
+ version: "1.3"
26
25
  type: :runtime
27
26
  version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
29
- name: bson_ext
30
- prerelease: false
31
- requirement: &id002 !ruby/object:Gem::Requirement
32
- none: false
33
- requirements:
34
- - - ~>
35
- - !ruby/object:Gem::Version
36
- version: 1.3.0
37
- type: :runtime
38
- version_requirements: *id002
39
27
  description: Adds the functionality to publish/unpublish
40
28
  email:
41
29
  - contato@lucasrenan.com
@@ -59,9 +47,16 @@ files:
59
47
  - publish.gemspec
60
48
  - test/dummy/Rakefile
61
49
  - test/dummy/app/controllers/application_controller.rb
50
+ - test/dummy/app/controllers/posts_controller.rb
62
51
  - test/dummy/app/helpers/application_helper.rb
52
+ - test/dummy/app/helpers/posts_helper.rb
63
53
  - test/dummy/app/models/post.rb
64
54
  - test/dummy/app/views/layouts/application.html.erb
55
+ - test/dummy/app/views/posts/_form.html.erb
56
+ - test/dummy/app/views/posts/edit.html.erb
57
+ - test/dummy/app/views/posts/index.html.erb
58
+ - test/dummy/app/views/posts/new.html.erb
59
+ - test/dummy/app/views/posts/show.html.erb
65
60
  - test/dummy/config.ru
66
61
  - test/dummy/config/application.rb
67
62
  - test/dummy/config/boot.rb
@@ -88,6 +83,7 @@ files:
88
83
  - test/dummy/public/javascripts/prototype.js
89
84
  - test/dummy/public/javascripts/rails.js
90
85
  - test/dummy/public/stylesheets/.gitkeep
86
+ - test/dummy/public/stylesheets/scaffold.css
91
87
  - test/dummy/script/rails
92
88
  - test/factories/posts.rb
93
89
  - test/integration/navigation_test.rb
@@ -95,7 +91,6 @@ files:
95
91
  - test/publish_test.rb
96
92
  - test/support/integration_case.rb
97
93
  - test/test_helper.rb
98
- has_rdoc: true
99
94
  homepage: https://github.com/lucasrenan/publish
100
95
  licenses: []
101
96
 
@@ -119,16 +114,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
114
  requirements: []
120
115
 
121
116
  rubyforge_project: publish
122
- rubygems_version: 1.6.2
117
+ rubygems_version: 1.8.10
123
118
  signing_key:
124
119
  specification_version: 3
125
120
  summary: Adds the functionality to publish/unpublish
126
121
  test_files:
127
122
  - test/dummy/Rakefile
128
123
  - test/dummy/app/controllers/application_controller.rb
124
+ - test/dummy/app/controllers/posts_controller.rb
129
125
  - test/dummy/app/helpers/application_helper.rb
126
+ - test/dummy/app/helpers/posts_helper.rb
130
127
  - test/dummy/app/models/post.rb
131
128
  - test/dummy/app/views/layouts/application.html.erb
129
+ - test/dummy/app/views/posts/_form.html.erb
130
+ - test/dummy/app/views/posts/edit.html.erb
131
+ - test/dummy/app/views/posts/index.html.erb
132
+ - test/dummy/app/views/posts/new.html.erb
133
+ - test/dummy/app/views/posts/show.html.erb
132
134
  - test/dummy/config.ru
133
135
  - test/dummy/config/application.rb
134
136
  - test/dummy/config/boot.rb
@@ -155,6 +157,7 @@ test_files:
155
157
  - test/dummy/public/javascripts/prototype.js
156
158
  - test/dummy/public/javascripts/rails.js
157
159
  - test/dummy/public/stylesheets/.gitkeep
160
+ - test/dummy/public/stylesheets/scaffold.css
158
161
  - test/dummy/script/rails
159
162
  - test/factories/posts.rb
160
163
  - test/integration/navigation_test.rb