typo 5.4 → 5.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/CHANGELOG +23 -30
  2. data/Typo users guide.pdf +0 -0
  3. data/app/controllers/admin/content_controller.rb +28 -36
  4. data/app/controllers/admin/tags_controller.rb +4 -4
  5. data/app/controllers/articles_controller.rb +119 -1
  6. data/app/controllers/comments_controller.rb +0 -7
  7. data/app/controllers/content_controller.rb +1 -0
  8. data/app/helpers/admin/content_helper.rb +9 -28
  9. data/app/helpers/admin/themes_helper.rb +4 -6
  10. data/app/helpers/articles_helper.rb +4 -0
  11. data/app/models/article.rb +21 -12
  12. data/app/models/blog.rb +0 -1
  13. data/app/models/category.rb +1 -6
  14. data/app/models/content.rb +10 -6
  15. data/app/models/feedback/states.rb +6 -6
  16. data/app/models/tag.rb +8 -8
  17. data/app/views/admin/content/_drafts.html.erb +1 -1
  18. data/app/views/admin/content/_form.html.erb +7 -4
  19. data/app/views/admin/content/index.html.erb +3 -3
  20. data/app/views/admin/feedback/index.html.erb +4 -4
  21. data/app/views/admin/settings/feedback.html.erb +8 -7
  22. data/app/views/admin/settings/write.html.erb +71 -72
  23. data/app/views/admin/tags/index.html.erb +4 -4
  24. data/app/views/admin/themes/editor.html.erb +13 -10
  25. data/app/views/articles/_article.html.erb +6 -4
  26. data/bin/typo +25 -0
  27. data/config/initializers/access_rules.rb +4 -0
  28. data/config/routes.rb +2 -2
  29. data/db/schema.rb +32 -26
  30. data/db/schema.sqlite3.sql +3 -0
  31. data/lang/fr_FR.rb +46 -44
  32. data/lib/tasks/release.rake +1 -1
  33. data/lib/typo_version.rb +1 -1
  34. data/public/images/admin/loading.gif +0 -0
  35. data/public/images/closelabel.gif +0 -0
  36. data/public/stylesheets/administration.css +28 -8
  37. data/spec/controllers/admin/content_controller_spec.rb +91 -7
  38. data/spec/controllers/articles_controller_spec.rb +209 -0
  39. data/spec/controllers/comments_controller_spec.rb +0 -17
  40. data/spec/controllers/xml_controller_spec.rb +0 -5
  41. data/spec/factories.rb +8 -3
  42. data/spec/models/article_spec.rb +31 -4
  43. data/spec/models/configuration_spec.rb +0 -4
  44. data/spec/models/user_spec.rb +13 -0
  45. data/spec/spec_helper.rb +13 -0
  46. data/spec/views/articles/index_spec.rb +9 -11
  47. data/spec/views/articles/read_spec.rb +3 -5
  48. data/test/fixtures/blogs.yml +0 -1
  49. data/themes/dirtylicious/views/articles/_article.html.erb +6 -4
  50. data/themes/scribbish/views/articles/_article.html.erb +6 -4
  51. data/themes/standard_issue/views/articles/_article.html.erb +6 -4
  52. data/themes/true-blue-3/views/articles/_article.html.erb +8 -6
  53. data/themes/true-blue-3/views/categories/_article.html.erb +1 -1
  54. data/themes/typographic/views/articles/_article.html.erb +7 -5
  55. metadata +6 -8
  56. data/app/controllers/admin/previews_controller.rb +0 -10
  57. data/app/controllers/previews_controller.rb +0 -10
  58. data/app/controllers/redirect_controller.rb +0 -143
  59. data/app/helpers/redirect_helper.rb +0 -13
  60. data/spec/controllers/previews_controller_spec.rb +0 -28
  61. data/spec/controllers/redirect_controller_spec.rb +0 -165
@@ -66,14 +66,6 @@ describe CommentsController, 'create' do
66
66
  post :create, :comment => comment, :article_id => contents(:article1).id
67
67
  end
68
68
 
69
- it "should throw an error if sp_allow_non_ajax_comments is false and there are no xhr headers" do
70
- b = blogs(:default)
71
- b.sp_allow_non_ajax_comments = false
72
- b.save
73
- make_the_request
74
- response.response_code.should == 400
75
- end
76
-
77
69
  it "should redirect to the article" do
78
70
  make_the_request
79
71
  response.should redirect_to("#{blogs(:default).base_url}/#{contents(:article1).created_at.year}/#{sprintf("%.2d", contents(:article1).created_at.month)}/#{sprintf("%.2d", contents(:article1).created_at.day)}/#{contents(:article1).permalink}")
@@ -87,15 +79,6 @@ describe CommentsController, 'AJAX creation' do
87
79
  xhr :post, :create, :comment => comment, :article_id => contents(:article1).id
88
80
  end
89
81
 
90
- it "should be be successful if blog.sp_allow_non_ajax_comments is false" do
91
- b = blogs(:default)
92
- b.sp_allow_non_ajax_comments = false
93
- b.save
94
- b.sp_allow_non_ajax_comments.should_not be_true
95
- make_the_request
96
- response.should be_success
97
- end
98
-
99
82
  it "should render the comment partial" do
100
83
  make_the_request
101
84
  response.should render_template("/articles/_comment")
@@ -147,11 +147,6 @@ describe XmlController do
147
147
  assert_response :redirect
148
148
  end
149
149
 
150
- # it "test_bad_format" do
151
- # get :feed, :format => 'atom04', :type => 'feed'
152
- # assert_response :missing
153
- # end
154
-
155
150
  it "test_bad_type" do
156
151
  get :feed, :format => 'rss20', :type => 'foobar'
157
152
  assert_response :missing
data/spec/factories.rb CHANGED
@@ -1,8 +1,13 @@
1
1
  require 'factory_girl'
2
2
 
3
+ Factory.sequence :user do |n|
4
+ "user#{n}"
5
+ end
6
+
3
7
  Factory.define :user do |u|
4
- u.login 'shingara'
5
- u.email 'cyril.mougel@gmail.com'
8
+ u.login { Factory.next(:user) }
9
+ u.email 'some.where@out.there'
10
+ u.password 'top-secret'
6
11
  end
7
12
 
8
13
  Factory.define :article do |a|
@@ -10,7 +15,7 @@ Factory.define :article do |a|
10
15
  a.body 'A content with several data'
11
16
  a.permalink 'a-big-article'
12
17
  a.published_at Time.now
13
- a.user Factory.build(:user)
18
+ a.association :user, :factory => :user
14
19
  end
15
20
 
16
21
  Factory.define :second_article, :parent => :article do |a|
@@ -15,12 +15,19 @@ describe Article do
15
15
  it 'should second_article factory valid' do
16
16
  Factory(:second_article).should be_valid
17
17
  Factory.build(:second_article).should be_valid
18
-
19
18
  end
20
19
  it 'should article_with_accent_in_html' do
21
20
  Factory(:article_with_accent_in_html).should be_valid
22
21
  Factory.build(:article_with_accent_in_html).should be_valid
23
22
  end
23
+ it 'should store user too' do
24
+ a = Factory(:article)
25
+ Article.find(a.id).user.should_not be_nil
26
+ end
27
+ it 'should multiple article factory valid' do
28
+ Factory(:article).should be_valid
29
+ Factory(:article).should be_valid
30
+ end
24
31
  end
25
32
 
26
33
  def assert_results_are(*expected)
@@ -307,7 +314,7 @@ describe Article do
307
314
  end
308
315
 
309
316
  describe 'body_and_extended' do
310
- before :each do
317
+ before :each do
311
318
  @article = contents(:article1)
312
319
  end
313
320
 
@@ -358,7 +365,7 @@ describe Article do
358
365
  end
359
366
 
360
367
  describe 'body_and_extended=' do
361
- before :each do
368
+ before :each do
362
369
  @article = contents(:article1)
363
370
  end
364
371
 
@@ -367,7 +374,7 @@ describe Article do
367
374
  @article.body.should == 'foo'
368
375
  @article.extended.should == 'bar'
369
376
  end
370
-
377
+
371
378
  it 'should remove newlines around <!--more-->' do
372
379
  @article.body_and_extended = "foo\n<!--more-->\nbar"
373
380
  @article.body.should == 'foo'
@@ -442,4 +449,24 @@ describe Article do
442
449
  Article.published_at_like(2.month.ago.strftime('%Y-%m-%d')).map(&:id).sort.should == [@article_two_month_ago.id].sort
443
450
  end
444
451
  end
452
+
453
+ describe '#has_child?' do
454
+ it 'should be true if article has one to link it by parent_id' do
455
+ Factory(:article, :parent_id => contents(:article1).id)
456
+ contents(:article1).should be_has_child
457
+ end
458
+ it 'should be false if article has no article to link it by parent_id' do
459
+ contents(:article1).should_not be_has_child
460
+ end
461
+ end
462
+
463
+ describe 'self#last_draft(id)' do
464
+ it 'should return article if no draft associated' do
465
+ Article.last_draft(contents(:article1).id).should == contents(:article1)
466
+ end
467
+ it 'should return draft associated to this article if there are one' do
468
+ draft = Factory(:article, :parent_id => contents(:article1).id, :state => 'draft')
469
+ Article.last_draft(contents(:article1).id).should == draft
470
+ end
471
+ end
445
472
  end
@@ -23,10 +23,6 @@ describe 'Given a new blog' do
23
23
  @blog.sp_article_auto_close.should == 0
24
24
  end
25
25
 
26
- it "#sp_allow_non_ajax_comments should be false" do
27
- @blog.should be_sp_allow_non_ajax_comments
28
- end
29
-
30
26
  it "#sp_url_limit should be 0" do
31
27
  @blog.sp_url_limit.should == 0
32
28
  end
@@ -1,5 +1,18 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
+ describe User do
4
+ describe 'Factory Girl' do
5
+ it 'should user factory valid' do
6
+ Factory.create(:user).should be_valid
7
+ Factory.build(:user).should be_valid
8
+ end
9
+ it 'should multiple user factory valid' do
10
+ Factory.create(:user).should be_valid
11
+ Factory.create(:user).should be_valid
12
+ end
13
+ end
14
+ end
15
+
3
16
  describe 'With the contents and users fixtures loaded' do
4
17
  before(:each) do
5
18
  User.stub!(:salt).and_return('change-me')
data/spec/spec_helper.rb CHANGED
@@ -53,6 +53,19 @@ def this_blog
53
53
  Blog.default || Blog.create!
54
54
  end
55
55
 
56
+ # test standard view and all themes
57
+ def with_each_theme
58
+ yield nil, ""
59
+ Dir.new(File.join(RAILS_ROOT, "themes")).each do |theme|
60
+ next if theme =~ /\.\.?/
61
+ view_path = "#{RAILS_ROOT}/themes/#{theme}/views"
62
+ if File.exists?("#{RAILS_ROOT}/themes/#{theme}/helpers/theme_helper.rb")
63
+ require "#{RAILS_ROOT}/themes/#{theme}/helpers/theme_helper.rb"
64
+ end
65
+ yield theme, view_path
66
+ end
67
+ end
68
+
56
69
  # This test now has optional support for validating the generated RSS feeds.
57
70
  # Since Ruby doesn't have a RSS/Atom validator, I'm using the Python source
58
71
  # for http://feedvalidator.org and calling it via 'system'.
@@ -1,11 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- # test standard view and all themes
4
- [ nil, "dirtylicious", "scribbish", "standard_issue", "typographic" ].each do |theme|
5
- view_path = theme ? "#{RAILS_ROOT}/themes/#{theme}/views" : ""
3
+ with_each_theme do |theme, view_path|
6
4
  describe "#{view_path}/articles/index" do
7
5
  before(:each) do
8
- @controller.view_paths = [ "#{RAILS_ROOT}/themes/#{theme}/views" ] if theme
6
+ @controller.view_paths.unshift(view_path) if theme
9
7
  # we only want to test pagination links
10
8
  ActionView::Base.class_eval do
11
9
  def article_links(article)
@@ -15,18 +13,18 @@ require File.dirname(__FILE__) + '/../../spec_helper'
15
13
  alias :tag_links :article_links
16
14
  end
17
15
  end
18
-
16
+
19
17
  context "normally" do
20
18
  before(:each) do
21
19
  @controller.action_name = "index"
22
20
  assigns[:articles] = Article.paginate(:all, :page => 2, :per_page => 4)
23
21
  render "articles/index"
24
22
  end
25
-
23
+
26
24
  it "should not have pagination link to page 2 without q param" do
27
25
  response.should_not have_tag("a[href=?]", "/page/2")
28
26
  end
29
-
27
+
30
28
  it "should have pagination link to page 1 without q param if on page 2" do
31
29
  response.should have_tag("a[href=?]", "/page/1")
32
30
  end
@@ -36,7 +34,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
36
34
  response.should_not have_tag("p>p", "body")
37
35
  end
38
36
  end
39
-
37
+
40
38
  # *notice
41
39
  # this assumptions has "&amp;", i don`t know why, but we want only to test the q= param in link and have separated this test from controller
42
40
  context "when search" do
@@ -48,14 +46,14 @@ require File.dirname(__FILE__) + '/../../spec_helper'
48
46
  assigns[:articles] = Blog.default.articles_matching(params[:q], :page => 2, :per_page => 4)
49
47
  render "articles/index"
50
48
  end
51
-
49
+
52
50
  it "should not have pagination link to page 2 with q param" do
53
51
  response.should_not have_tag("a[href=?]", "/search/body?page=2") # *notice
54
52
  end
55
-
53
+
56
54
  it "should have pagination link to page 1 with q param if on page 2" do
57
55
  response.should have_tag("a[href=?]", "/search/body?page=1") # *notice
58
- end
56
+ end
59
57
  end
60
58
  end
61
59
  end
@@ -1,11 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- # test standard view and all themes
4
- [ nil, "dirtylicious", "scribbish", "standard_issue", "typographic" ].each do |theme|
5
- view_path = theme ? "#{RAILS_ROOT}/themes/#{theme}/views" : ""
3
+ with_each_theme do |theme, view_path|
6
4
  describe "#{view_path}/articles/read" do
7
5
  before(:each) do
8
- @controller.view_paths = [ "#{RAILS_ROOT}/themes/#{theme}/views" ] if theme
6
+ @controller.view_paths.unshift(view_path) if theme
9
7
  # we do not want to test article links and such
10
8
  ActionView::Base.class_eval do
11
9
  def article_links(article)
@@ -18,7 +16,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
18
16
 
19
17
  context "applying text filters" do
20
18
  before(:each) do
21
- @controller.action_name = "read"
19
+ @controller.action_name = "redirect"
22
20
  assigns[:article] = contents('article1')
23
21
  render "articles/read"
24
22
  end
@@ -32,5 +32,4 @@ default:
32
32
  link_to_author: false
33
33
  itunes_summary: ""
34
34
  comment_text_filter: markdown
35
- sp_allow_non_ajax_comments: true
36
35
  permalink_format: /%year%/%month%/%day%/%title%
@@ -9,14 +9,16 @@
9
9
  </div>
10
10
 
11
11
  <div class="content">
12
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
12
+ <% unless controller.action_name == 'redirect' %>
13
13
  <% if article.excerpt? %>
14
14
  <%= article.excerpt %>
15
15
  <% else %>
16
16
  <%= article.html(:body) %>
17
- <div class="extended">
18
- <p><%= link_to_permalink article,"Continue reading..." %></p>
19
- </div>
17
+ <% if article.extended? %>
18
+ <div class="extended">
19
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
20
+ </div>
21
+ <% end %>
20
22
  <% end %>
21
23
  <% else %>
22
24
  <%= article.html(:body) %>
@@ -10,14 +10,16 @@
10
10
  </p>
11
11
 
12
12
  <div class="content">
13
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
13
+ <% unless controller.action_name == 'redirect' %>
14
14
  <% if article.excerpt? %>
15
15
  <%= article.excerpt %>
16
16
  <% else %>
17
17
  <%= article.html(:body) %>
18
- <div class="extended">
19
- <p><%= link_to_permalink article,"Continue reading..." %></p>
20
- </div>
18
+ <% if article.extended? %>
19
+ <div class="extended">
20
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
21
+ </div>
22
+ <% end %>
21
23
  <% end %>
22
24
  <% else %>
23
25
  <%= article.html(:body) %>
@@ -1,14 +1,16 @@
1
1
  <div class="atomentry" id="article-<%= article.id %>">
2
2
  <h2 class="title"><%= (controller.action_name.include? 'permalink') ? article.title : link_to_permalink(article,article.title) %></h2>
3
3
  <div class="content">
4
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
4
+ <% unless controller.action_name == 'redirect' %>
5
5
  <% if article.excerpt? %>
6
6
  <%= article.excerpt %>
7
7
  <% else %>
8
8
  <%= article.html(:body) %>
9
- <div class="extended">
10
- <p><%= link_to_permalink article,"Continue reading..." %></p>
11
- </div>
9
+ <% if article.extended? %>
10
+ <div class="extended">
11
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
12
+ </div>
13
+ <% end %>
12
14
  <% end %>
13
15
  <% else %>
14
16
  <%= article.html(:body) %>
@@ -1,15 +1,17 @@
1
1
  <div class='category-excerpt <%= "border" if @article_counter >= 0 %>' id="article-<%= article.id %>">
2
2
  <h2><%= (controller.controller_name == 'redirect') ? article.title : link_to_permalink(article,article.title) %></h2>
3
+ <% unless controller.action_name == 'redirect' %>
3
4
  <% if article.excerpt? %>
4
5
  <%= article.excerpt %>
5
6
  <% else %>
6
- <% if article.extended %>
7
- <%= article.html(:body) %>
8
- <% else %>
9
- <%= article.html(:body) %>
10
- <%= article.html(:extended) %>
11
- <% end %>
7
+ <%= article.html(:body) %>
12
8
  <% end %>
9
+ <% else %>
10
+ <%= article.html(:body) %>
11
+ <% if article.extended? %>
12
+ <%= article.html(:extended) %>
13
+ <% end %>
14
+ <% end %>
13
15
  <div class='author'>
14
16
  Published on <%= _(article.published_at.utc.strftime(_("%%a, %%d %%b %%Y %%H:%%M", article.published_at.utc))) %>
15
17
  </div>
@@ -1,5 +1,5 @@
1
1
  <div class='category-excerpt <%= "border" if @article_counter >= 0 %>' id="article-<%= article.id %>">
2
- <h2><%= link_to_permalink(article,article.title %></h2>
2
+ <h2><%= link_to_permalink(article, article.title) %></h2>
3
3
  <% if article.excerpt? %>
4
4
  <%= article.excerpt %>
5
5
  <% else %>
@@ -6,14 +6,16 @@
6
6
  </div>
7
7
  </div>
8
8
  <div class="content">
9
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
9
+ <% unless controller.action_name == 'redirect' %>
10
10
  <% if article.excerpt? %>
11
11
  <%= article.excerpt %>
12
12
  <% else %>
13
13
  <%= article.html(:body) %>
14
- <div class="extended">
15
- <p><%= link_to_permalink article,"Continue reading..." %></p>
16
- </div>
14
+ <% if article.extended? %>
15
+ <div class="extended">
16
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
17
+ </div>
18
+ <% end %>
17
19
  <% end %>
18
20
  <% else %>
19
21
  <%= article.html(:body) %>
@@ -22,7 +24,7 @@
22
24
  </div>
23
25
  <% end %>
24
26
  </div>
25
- <% if controller.controller_name == "articles" and controller.action_name == "show" %>
27
+ <% if controller.controller_name == "articles" and controller.action_name == "redirect" %>
26
28
  <div class="meta">
27
29
  <p class="infos"><small>
28
30
  <%= _("This entry was posted on %s", content_tag(:abbr, js_distance_of_time_in_words_to_now(@article.published_at), {:class => 'published', :title => @article.published_at.xmlschema})) %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typo
3
3
  version: !ruby/object:Gem::Version
4
- version: "5.4"
4
+ version: 5.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Fr\xC3\xA9d\xC3\xA9ric de Villamil"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-19 00:00:00 +01:00
12
+ date: 2009-12-28 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -144,7 +144,6 @@ files:
144
144
  - app/controllers/admin/dashboard_controller.rb
145
145
  - app/controllers/admin/feedback_controller.rb
146
146
  - app/controllers/admin/pages_controller.rb
147
- - app/controllers/admin/previews_controller.rb
148
147
  - app/controllers/admin/profiles_controller.rb
149
148
  - app/controllers/admin/resources_controller.rb
150
149
  - app/controllers/admin/settings_controller.rb
@@ -162,8 +161,6 @@ files:
162
161
  - app/controllers/content_controller.rb
163
162
  - app/controllers/feedback_controller.rb
164
163
  - app/controllers/grouping_controller.rb
165
- - app/controllers/previews_controller.rb
166
- - app/controllers/redirect_controller.rb
167
164
  - app/controllers/tags_controller.rb
168
165
  - app/controllers/textfilter_controller.rb
169
166
  - app/controllers/theme_controller.rb
@@ -194,7 +191,6 @@ files:
194
191
  - app/helpers/content_helper.rb
195
192
  - app/helpers/groupings_helper.rb
196
193
  - app/helpers/mail_helper.rb
197
- - app/helpers/redirect_helper.rb
198
194
  - app/helpers/sidebar_helper.rb
199
195
  - app/helpers/sidebars/plugin_helper.rb
200
196
  - app/helpers/tags_helper.rb
@@ -493,6 +489,7 @@ files:
493
489
  - db/schema.postgresql.sql
494
490
  - db/schema.rb
495
491
  - db/schema.sqlite.sql
492
+ - db/schema.sqlite3.sql
496
493
  - db/schema.sqlserver.sql
497
494
  - db/schema_version
498
495
  - db/scripts/fix_permalinks.rb
@@ -564,11 +561,13 @@ files:
564
561
  - public/images/admin/input_text_right.jpg
565
562
  - public/images/admin/input_text_small_left.jpg
566
563
  - public/images/admin/input_text_small_right.jpg
564
+ - public/images/admin/loading.gif
567
565
  - public/images/admin/publisher_bottom.jpg
568
566
  - public/images/admin/publisher_top.jpg
569
567
  - public/images/admin/typologo.gif
570
568
  - public/images/calendar_date_select/calendar.gif
571
569
  - public/images/close.gif
570
+ - public/images/closelabel.gif
572
571
  - public/images/go.png
573
572
  - public/images/loading.gif
574
573
  - public/images/nextlabel.gif
@@ -921,8 +920,6 @@ files:
921
920
  - spec/controllers/backend_controller_spec.rb
922
921
  - spec/controllers/categories_controller_spec.rb
923
922
  - spec/controllers/comments_controller_spec.rb
924
- - spec/controllers/previews_controller_spec.rb
925
- - spec/controllers/redirect_controller_spec.rb
926
923
  - spec/controllers/routes/articles_routing_spec.rb
927
924
  - spec/controllers/routes/xml_routing_spec.rb
928
925
  - spec/controllers/tags_controller_spec.rb
@@ -1184,6 +1181,7 @@ files:
1184
1181
  - themes/typographic/views/articles/index.html.erb
1185
1182
  - themes/typographic/views/articles/read.html.erb
1186
1183
  - themes/typographic/views/theme/static_view_test.html.erb
1184
+ - Typo users guide.pdf
1187
1185
  - UPGRADE
1188
1186
  - vendor/akismet/akismet.rb
1189
1187
  - vendor/flickr/flickr.rb