typo 5.0 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/CHANGES-5.0 +82 -0
  2. data/app/controllers/articles_controller.rb +4 -4
  3. data/app/helpers/admin/base_helper.rb +9 -6
  4. data/app/models/blog_sweeper.rb +5 -0
  5. data/app/models/page_cache.rb +12 -6
  6. data/app/models/user.rb +7 -2
  7. data/app/views/admin/categories/show.html.erb +3 -3
  8. data/app/views/admin/content/_articles.html.erb +1 -1
  9. data/app/views/admin/general/index.html.erb +4 -4
  10. data/app/views/admin/sidebar/index.html.erb +1 -1
  11. data/app/views/admin/themes/index.html.erb +1 -1
  12. data/config/environments/development.rb +1 -1
  13. data/db/migrate/066_fix_profiles.rb +20 -0
  14. data/db/schema.rb +2 -2
  15. data/lib/tasks/release.rake +1 -8
  16. data/lib/typo_version.rb +1 -1
  17. data/spec/controllers/articles_controller_spec.rb +1 -1
  18. data/spec/fixtures/contents.yml +3 -13
  19. data/spec/fixtures/profiles.yml +11 -0
  20. data/spec/fixtures/tags.yml +0 -3
  21. data/spec/models/page_spec.rb +7 -4
  22. data/spec/models/tag_spec.rb +1 -1
  23. data/spec/spec_helper.rb +1 -0
  24. data/test/fixtures/profiles.yml +1 -6
  25. data/test/fixtures/users.yml +8 -8
  26. data/vendor/plugins/rspec/CHANGES +1 -9
  27. data/vendor/plugins/rspec/examples/pure/helper_method_example.rb +6 -9
  28. data/vendor/plugins/rspec/lib/spec/example/example_methods.rb +8 -9
  29. data/vendor/plugins/rspec/lib/spec/matchers.rb +7 -1
  30. data/vendor/plugins/rspec/lib/spec/matchers/be.rb +2 -3
  31. data/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb +3 -10
  32. data/vendor/plugins/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb +5 -8
  33. data/vendor/plugins/rspec/lib/spec/story/runner/story_parser.rb +8 -8
  34. data/vendor/plugins/rspec/lib/spec/story/runner/story_runner.rb +0 -1
  35. data/vendor/plugins/rspec/lib/spec/version.rb +1 -1
  36. data/vendor/plugins/rspec/spec/spec/example/example_methods_spec.rb +0 -16
  37. data/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb +3 -3
  38. data/vendor/plugins/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +4 -45
  39. data/vendor/plugins/rspec/spec/spec/story/runner/story_runner_spec.rb +0 -37
  40. data/vendor/plugins/rspec/stories/example_groups/autogenerated_docstrings +8 -27
  41. data/vendor/plugins/rspec/stories/example_groups/output +0 -5
  42. data/vendor/plugins/rspec_on_rails/lib/spec/rails/example/helper_example_group.rb +1 -0
  43. data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +2 -2
  44. data/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb +1 -1
  45. data/vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +46 -0
  46. metadata +5 -7
  47. data/spec/fixtures/articles_tags.yml +0 -19
  48. data/vendor/plugins/rspec/failing_examples/failing_autogenerated_docstrings_example.rb +0 -19
  49. data/vendor/plugins/rspec/stories/resources/stories/failing_story.rb +0 -15
  50. data/vendor/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb +0 -62
@@ -0,0 +1,82 @@
1
+ Typo 5.0 "Eugène Atget" finally finished after about 7 month of slacking making. This in an important release, stuffed with great new features, loads of fixes and an incredible amount of polish. This may sound like DHH introduction to Rails 2.0, and it does, because Typo 5.0 now runs with Ruby on Rails 2.0 and won't run with anything else. That's the reason of the major version change.
2
+
3
+ Before jumping into the breakdown of features, I’d just like to extend my deep gratitude towards everyone who helped make this release possible. From Piers who made this possible to the (hundreds of) contributors who got a patch applied to everyone on #typo who kept the spirit alive. You can all be mighty proud of the role you played. Cheers!
4
+
5
+ ** Why Eugène Atget ? **
6
+
7
+ I've wanted to give our releases a name for a while now, but we needed to find a path we should follow from along the versions. Piers and I are both photographers, and most of the visible work on Typo has been done in Paris, which is a town Atget spent his life to picture. That's the reason why his name came first when we had to choose one.
8
+
9
+ ** Sidebars removal **
10
+
11
+ As we announced earlier, we've decided to move most of the sidebars plugins out of the trunk. There are many reasons why we think that, out of some basic functionnalities, sidebars should be third party softwares apart performances issues. We'll continue to maintain these plugins anyway.
12
+
13
+ If you're using one of the following plugins, be sure to install it, or your blog may explode with lots of nasty error messages.
14
+
15
+
16
+ – AIM presence
17
+ – Audioscrobbler
18
+ – Backpack
19
+ – Delicious
20
+ – Flickr
21
+ – 43 things
22
+ – 43 places
23
+ – Magnolia
24
+ – Recent comments
25
+ – Tada
26
+ – Upcoming
27
+ – Xbox
28
+
29
+
30
+ Plugins are now in our plugins repository, and installs like any rails plugin. Expect basic archives soon.
31
+
32
+ /path/to/typo$ ./script/plugins install http://svn.typosphere.org/typo/plugins/some-plugin
33
+
34
+ ** Code refactoring **
35
+
36
+ The immerged part of the iceberg, but not the least one, most of the existing code has been rewriten. Typo was started when Rails was young, very young, and lots of things were added to the framework after we had to write them.
37
+
38
+ The result is impressive in terms of performances, and bug fixing as well.
39
+
40
+ ** Admin refactoring **
41
+
42
+ Admin has been entirely revamped, twice, between 4.1 and 5.0, and we're quite proud of how it works now.
43
+
44
+ The existing admin was the result of a scaffold during Typo early days, and even though some improvements has been done, many things were not as user friendly as they should have been. New admin now aims at giving a clear view on the information, and eased access to the most daily used functionnalities in your blogging life.
45
+
46
+ * Simple and avanced admin *
47
+
48
+ We now deliver the admin in 2 flavors, simple and advanced, because everybody doesn't have the same need when it goes to blogging. We have also splitted the settings in 2 places, to separate basic and advanced settings.
49
+
50
+ * More localisation *
51
+
52
+ 4.1 introduced Typo internationalization, but no one noticed it as it was hidden in the deep of environment.rb. You can now choose your prefered language from the settings. We hope the community to support the translation effort.
53
+
54
+ * Comments moderation *
55
+
56
+ Another hidden feature of 4.1 I think it's important to mention here is default comment moderation. This is a stone in the build of a better discussion management.
57
+
58
+ * Theme editor *
59
+
60
+ A theme editor was a missing piece in Typo admin, and it's now filled with a basic, but usable editor. For now it allows you to edit your layout and stylesheet. Views editing will come later.
61
+
62
+ * Dashboard *
63
+
64
+ We've also added a dashboard we plan to improve with time. It aims at giving you a view on the latests activity on your Typo blog.
65
+
66
+ ** Solving SEO issues **
67
+
68
+ For long time now, Typo has been a pain to search engine optimisation, mostly because most pages, out of single posts, had the same meta title and description. That thing we never noticed before had nasty effects when melted with Google duplicate content algorythm, which even led some blogs to be banned from index. Expect some more improvement in a near future.
69
+
70
+ ** New themes **
71
+
72
+ Azure which has been Typo default theme for a while now has been removed from the core and won't be supported anymore. Standard issue is now our new default theme, and we have introduced Dirtylicious as well. Scribbish has been kept for backward compatibility as many blogs are using it, starting Piers.
73
+
74
+ Both themes were built above Scribbish markup and are thus hatom compliant.
75
+
76
+ ** Typo themes garden **
77
+
78
+ I know this should be a community matter, and it may not have its place on a release note, however I think it's important enough to mention it. Every theme listed on <a href="http://www.dev411.com/typo/themes/">dev 411 Typo theme viewer</a> has been updated to support Typo 5.0, and updated themes are already avaliable.
79
+
80
+ We do think having a usable themes and plugins park is important, and too many themes were only Typo 2.6.0 compatible. That's the reason why we did the themes migration while finishing Typo 5.0, and we plan to port even more non Typo themes in a near futur.
81
+
82
+ We hope you'll enjoy this release as much as we enjoyed making it.
@@ -41,10 +41,10 @@ class ArticlesController < ContentController
41
41
  respond_to do |format|
42
42
  format.html { render_paginated_index }
43
43
  format.atom do
44
- render :partial => 'atom_feed', :object => @articles[0,this_blog.limit_rss_display]
44
+ render :partial => 'articles/atom_feed', :object => @articles[0,this_blog.limit_rss_display]
45
45
  end
46
46
  format.rss do
47
- render :partial => 'rss20_feed', :object => @articles[0,this_blog.limit_rss_display]
47
+ render :partial => 'articles/rss20_feed', :object => @articles[0,this_blog.limit_rss_display]
48
48
  end
49
49
  end
50
50
  end
@@ -56,8 +56,8 @@ class ArticlesController < ContentController
56
56
  auto_discovery_feed
57
57
  respond_to do |format|
58
58
  format.html { render :action => 'read' }
59
- format.atom { render :partial => 'atom_feed', :object => @article.published_feedback }
60
- format.rss { render :partial => 'rss20_feed', :object => @article.published_feedback }
59
+ format.atom { render :partial => 'articles/atom_feed', :object => @article.published_feedback }
60
+ format.rss { render :partial => 'articles/rss20_feed', :object => @article.published_feedback }
61
61
  format.xml { redirect_to :format => 'atom' }
62
62
  end
63
63
  rescue ActiveRecord::RecordNotFound
@@ -57,16 +57,19 @@ module Admin::BaseHelper
57
57
  '<input type="submit" value="' + val + '" />'
58
58
  end
59
59
 
60
- def link_to_show(record)
61
- link_to image_tag('admin/show.png'), :action => 'show', :id => record.id
60
+ def link_to_show(record, controller = @controller.controller_name)
61
+ link_to image_tag('admin/show.png', :alt => "show", :title => "Show content"),
62
+ :controller => controller, :action => 'show', :id => record.id
62
63
  end
63
64
 
64
- def link_to_edit(record)
65
- link_to image_tag('admin/edit.png', :alt => "edit", :title => "Edit content"), :action => 'edit', :id => record.id
65
+ def link_to_edit(record, controller = @controller.controller_name)
66
+ link_to image_tag('admin/edit.png', :alt => "edit", :title => "Edit content"),
67
+ :controller => controller, :action => 'edit', :id => record.id
66
68
  end
67
69
 
68
- def link_to_destroy(record)
69
- link_to image_tag('admin/delete.png', :alt => "delete", :title => "Delete content"), :action => 'destroy', :id => record.id
70
+ def link_to_destroy(record, controller = @controller.controller_name)
71
+ link_to image_tag('admin/delete.png', :alt => "delete", :title => "Delete content"),
72
+ :controller => controller, :action => 'destroy', :id => record.id
70
73
  end
71
74
 
72
75
  def text_filter_options
@@ -46,6 +46,7 @@ class BlogSweeper < ActionController::Caching::Sweeper
46
46
  sweep_pages
47
47
  when Blog, User
48
48
  sweep_all
49
+ sweep_theme
49
50
  end
50
51
  end
51
52
 
@@ -54,6 +55,10 @@ class BlogSweeper < ActionController::Caching::Sweeper
54
55
  PageCache.sweep_all
55
56
  end
56
57
 
58
+ def sweep_theme
59
+ PageCache.sweep_theme_cache
60
+ end
61
+
57
62
  def sweep_articles
58
63
  expire_fragment(%r{.*/articles/.*})
59
64
  PageCache.zap_pages('index.*', 'articles')
@@ -1,18 +1,24 @@
1
1
  class PageCache < ActiveRecord::Base
2
- cattr_accessor :public_path
3
- @@public_path = ActionController::Base.page_cache_directory
2
+ def self.public_path
3
+ ActionController::Base.page_cache_directory
4
+ end
4
5
 
5
6
  def self.sweep_all
6
7
  self.zap_pages('index.*', 'articles', 'pages')
7
8
  end
8
9
 
10
+ def self.sweep_theme_cache
11
+ self.zap_pages('images/theme', 'stylesheets/theme', 'javascripts/theme')
12
+ end
13
+
9
14
  def self.zap_pages(*paths)
15
+ srcs = paths.inject([]) { |o,v|
16
+ o + Dir.glob(public_path + "/#{v}")
17
+ }
18
+ return true if srcs.empty?
10
19
  trash = Dir::tmpdir
11
20
  FileUtils.makedirs(trash)
12
- srcs = paths.collect { |v|
13
- Dir.glob(public_path + "/#{v}")
14
- }
15
- FileUtils.mv(srcs.flatten, trash, :force => true)
21
+ FileUtils.mv(srcs, trash, :force => true)
16
22
  FileUtils.rm_rf(trash)
17
23
  end
18
24
  end
@@ -2,7 +2,7 @@ require 'digest/sha1'
2
2
 
3
3
  # this model expects a certain database layout and its based on the name/login pattern.
4
4
  class User < CachedModel
5
- has_one :profile
5
+ belongs_to :profile
6
6
  has_many :notifications, :foreign_key => 'notify_user_id'
7
7
  has_many :notify_contents, :through => :notifications,
8
8
  :source => 'notify_content',
@@ -117,11 +117,16 @@ class User < CachedModel
117
117
  end
118
118
  end
119
119
 
120
+ before_validation :set_default_profile
121
+
122
+ def set_default_profile
123
+ self.profile ||= Profile.find_by_label('admin')
124
+ end
125
+
120
126
  validates_uniqueness_of :login, :on => :create
121
127
  validates_length_of :password, :within => 5..40, :on => :create
122
128
  validates_presence_of :login
123
129
 
124
130
  validates_confirmation_of :password, :if=> Proc.new { |u| u.password.size > 0}
125
131
  validates_length_of :login, :within => 3..40
126
- belongs_to :profile
127
132
  end
@@ -27,9 +27,9 @@
27
27
  <td><%= article.published_at.strftime("%d/%m/%Y at %H:%M") %></td>
28
28
  <td><%= author_link(article) %></td>
29
29
  <td class="operation"><%= (article.published?) ? image_tag('admin/checked.png', :alt => "online", :title => _("Online")) : image_tag('admin/cancel.png', :alt => "offline", :title => _("Offline")) %></td>
30
- <td class="operation"><%= link_to image_tag('admin/show.png', :alt => "View article", :title => "Preview article"), {:action => "show", :id => article.id} %></td>
31
- <td class="operation"><%= link_to_edit article %></td>
32
- <td class="operation last"><%= link_to_destroy article %></td>
30
+ <td class="operation"><%= link_to_show article, 'content' %></td>
31
+ <td class="operation"><%= link_to_edit article, 'content' %></td>
32
+ <td class="operation last"><%= link_to_destroy article, 'content' %></td>
33
33
  </tr>
34
34
  <% end -%>
35
35
  </table>
@@ -18,7 +18,7 @@
18
18
  <td><%= article.published_at.strftime("%d/%m/%Y at %H:%M") %></td>
19
19
  <td><%= author_link(article)%></td>
20
20
  <td class="operation"><%= (article.published?) ? image_tag('admin/checked.png', :alt => "online", :title => _("Online")) : image_tag('admin/cancel.png', :alt => "offline", :title => _("Offline")) %></td>
21
- <td class="operation"><%= link_to image_tag('admin/show.png', :alt => "View article", :title => "Preview article"), { :controller => 'admin/content', :action => "show", :id => article.id} %></td>
21
+ <td class="operation"><%= link_to_show article %></td>
22
22
  <td class="operation"><%= link_to_edit article %></td>
23
23
  <td class="operation last"><%= link_to_destroy article %></td>
24
24
  </tr>
@@ -3,8 +3,8 @@
3
3
  <% content_for('tasks') do -%>
4
4
  <%= subtab _("Basic settings"), "current", {:controller => "general"} %>
5
5
  <%= subtab _("Advanced settings"), "", {:controller => "advanced"} if (this_blog.display_advanced == 1) %>
6
- <%= subtab _("Empty Fragment Cache"), "", {:controller => '/admin/cache', :action => 'sweep'} if (this_blog.display_advanced == 1) %>
7
- <%= subtab _("Rebuild cached HTML"), "", {:controller => '/admin/cache', :action => 'sweep_html'} if (this_blog.display_advanced == 1) %>
6
+ <%= subtab _("Empty Fragment Cache"), "", {:controller => '/admin/cache', :action => 'sweep'} if this_blog.cache_option == 'caches_action_with_params' %>
7
+ <%= subtab _("Rebuild cached HTML"), "", {:controller => '/admin/cache', :action => 'sweep_html'} if this_blog.cache_option == 'caches_page' %>
8
8
  <% end -%>
9
9
 
10
10
  <% form_tag :action => 'update' do %>
@@ -45,10 +45,10 @@
45
45
  <li>
46
46
  <label class="float" for="caches_page">Choose caching methode:</label>
47
47
  <input type="radio" name="setting[cache_option]" value="caches_page" id="cache_option_0" <%= 'checked="checked"' if this_blog.cache_option == 'caches_page' %>/>
48
- <label for="cache_option_0"><%= _("Use static HTML page caching (default)")%></label>
48
+ <label for="cache_option_0"><%= _("Use static HTML page caching ")%></label>
49
49
  <span class="float">
50
50
  <input type="radio" name="setting[cache_option]" value="caches_action_with_params" id="cache_option_1" <%= 'checked="checked"' if this_blog.cache_option == 'caches_action_with_params' %>/>
51
- <label for="cache_option_1"><%= _("Use semi static caching")%></label>
51
+ <label for="cache_option_1"><%= _("Use semi static caching (default)")%></label>
52
52
  </span>
53
53
  </li>
54
54
  </ul>
@@ -3,7 +3,7 @@
3
3
  <%= subtab _("Sidebar"), "current", {:controller=>"sidebar", :action=>"index"} %>
4
4
  <%= subtab _("Choose theme"), "", {:controller=>"themes", :action=>"index"} %>
5
5
  <%= subtab _("Theme editor"), "", {:controller=>"themes", :action=>"editor"} %>
6
- <%= subtab (_("Text Filters"), "", {:controller=>"textfilters", :action=>"list"}) if this_blog.display_advanced == 1 %>
6
+ <%= subtab(_("Text Filters"), "", {:controller=>"textfilters", :action=>"list"}) if this_blog.display_advanced == 1 %>
7
7
  <% end %>
8
8
  <p class="paginate l">You can download and install sidebar plugins from our official <a href="http://svn.typosphere.org/typo/plugins/">plugin repository</a> running script/plugins install http://svn.typosphere.org/typo/plugins/myplugin, or upload them in the vendors/plugin directory.</p>
9
9
 
@@ -3,7 +3,7 @@
3
3
  <%= subtab _("Sidebar"), "", {:controller=>"sidebar", :action=>"index"} %>
4
4
  <%= subtab _("Choose theme"), "current", {:controller=>"themes", :action=>"index"} %>
5
5
  <%= subtab _("Theme editor"), "", {:controller=>"themes", :action=>"editor"} %>
6
- <%= subtab _("Text Filters"), "", {:controller=>"textfilters", :action=>"list"} if (this_blog.display_advanced == 1) %>
6
+ <%= subtab(_("Text Filters"), "", {:controller=>"textfilters", :action=>"list"}) if (this_blog.display_advanced == 1) %>
7
7
  <% end %>
8
8
 
9
9
  <p class="paginate l">
@@ -8,7 +8,7 @@ config.whiny_nils = true
8
8
 
9
9
  # Show full error reports and disable caching
10
10
  config.action_controller.consider_all_requests_local = true
11
- config.action_controller.perform_caching = false
11
+ config.action_controller.perform_caching = true
12
12
 
13
13
  # Don't care if the mailer can't send
14
14
  config.action_mailer.raise_delivery_errors = false
@@ -0,0 +1,20 @@
1
+ class FixProfiles < ActiveRecord::Migration
2
+ # We got this migration wrong before. Easiest fix is to undo it, then reapply
3
+ # correctly
4
+
5
+ class User < ActiveRecord::Base
6
+ include BareMigration
7
+ end
8
+
9
+ def self.up
10
+ remove_column :users, :profile_id
11
+ add_column :users, :profile_id, :integer
12
+ admin_id = Profile.find_by_label('admin').id
13
+ User.update_all("profile_id = #{admin_id}")
14
+ end
15
+
16
+ def self.down
17
+ remove_column :users, :profile_id
18
+ add_column :users, :profile_id, :integer, :default => 1
19
+ end
20
+ end
@@ -9,7 +9,7 @@
9
9
  #
10
10
  # It's strongly recommended to check this file into your version control system.
11
11
 
12
- ActiveRecord::Schema.define(:version => 65) do
12
+ ActiveRecord::Schema.define(:version => 66) do
13
13
 
14
14
  create_table "articles_tags", :id => false, :force => true do |t|
15
15
  t.integer "article_id"
@@ -215,7 +215,7 @@ ActiveRecord::Schema.define(:version => 65) do
215
215
  t.boolean "notify_watch_my_articles"
216
216
  t.boolean "notify_via_jabber"
217
217
  t.string "jabber"
218
- t.integer "profile_id", :default => 1
218
+ t.integer "profile_id"
219
219
  end
220
220
 
221
221
  end
@@ -1,7 +1,7 @@
1
1
  require 'rake/gempackagetask'
2
2
  require 'rake/contrib/rubyforgepublisher'
3
3
 
4
- PKG_VERSION = "5.0"
4
+ PKG_VERSION = "5.0.1"
5
5
  PKG_NAME = "typo"
6
6
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
7
7
  RUBY_FORGE_PROJECT = 'typo'
@@ -15,13 +15,6 @@ spec = Gem::Specification.new do |s|
15
15
  s.has_rdoc = false
16
16
 
17
17
  s.files = Dir.glob('**/*', File::FNM_DOTMATCH).reject do |f|
18
- # [ /\.$/, /config\/database.yml$/, /config\/database.yml-/,
19
- # /database\.sqlite/,
20
- # /\.log$/, /^pkg/, /\.svn/,
21
- # /^public\/(files|xml|articles|pages|index.html)/,
22
- # /^public\/(stylesheets|javascripts|images)\/theme/, /\~$/,
23
- # /\/\._/, /\/#/ ].any? {|regex| f =~ regex }
24
-
25
18
  [ /\.$/, /config\/database.yml$/, /config\/database.yml-/,
26
19
  /database\.sqlite/,
27
20
  /\.log$/, /^pkg/, /\.svn/, /^vendor\/rails\/(?!actionwebservice)/,
@@ -1 +1 @@
1
- TYPO_VERSION = '4.1.1'
1
+ TYPO_VERSION = '5.0.1'
@@ -11,7 +11,7 @@ describe 'ArticlesController' do
11
11
  controller_name :articles
12
12
  Article.delete_all
13
13
  fixtures(:contents, :feedback, :categories, :blogs, :users, :categorizations,
14
- :text_filters, :articles_tags, :tags, :blacklist_patterns, :resources,
14
+ :text_filters, :tags, :blacklist_patterns, :resources,
15
15
  :sidebars)
16
16
 
17
17
  before(:each) do
@@ -2,7 +2,6 @@
2
2
 
3
3
  article1:
4
4
  blog_id: 1
5
- id: 1
6
5
  title: Article 1!
7
6
  body: body
8
7
  extended: extended content
@@ -18,11 +17,11 @@ article1:
18
17
  type: Article
19
18
  published: true
20
19
  state: published
20
+ tags: foo_tag, bar_tag
21
21
 
22
22
  article2:
23
23
  type: Article
24
24
  blog_id: 1
25
- id: 2
26
25
  title: Article 2!
27
26
  body: body
28
27
  extended: extended content
@@ -37,12 +36,12 @@ article2:
37
36
  guid: bbbbb
38
37
  published: true
39
38
  state: published
39
+ tags: foo_tag
40
40
 
41
41
 
42
42
  article3:
43
43
  type: Article
44
44
  blog_id: 1
45
- id: 3
46
45
  title: Article 3!
47
46
  body: body
48
47
  extended: extended content
@@ -61,7 +60,6 @@ article3:
61
60
  article4:
62
61
  type: Article
63
62
  blog_id: 1
64
- id: 4
65
63
  title: Article 4!
66
64
  body: I\'m not "public":http://www.example.com/public!
67
65
  published: false
@@ -75,11 +73,11 @@ article4:
75
73
  user_id: 1
76
74
  author: Tobi
77
75
  guid: ddddd
76
+ tags: foo_tag, bar_tag, bazz_tag
78
77
 
79
78
  first_page:
80
79
  type: Page
81
80
  blog_id: 1
82
- id: 9
83
81
  name: page_one
84
82
  title: Page One Title
85
83
  body: ho ho ho
@@ -93,8 +91,6 @@ first_page:
93
91
  another_page:
94
92
  type: Page
95
93
  blog_id: 1
96
- id: 10
97
- name: page/two
98
94
  title: Another Page Title
99
95
  body: another body for yet another page
100
96
  updated_at: 2005-05-05 01:00:00
@@ -107,7 +103,6 @@ another_page:
107
103
  markdown_page:
108
104
  type: Page
109
105
  blog_id: 1
110
- id: 11
111
106
  name: markdown-page
112
107
  title: Markdown Page
113
108
  text_filter_id: 1
@@ -122,7 +117,6 @@ markdown_page:
122
117
  inactive_article:
123
118
  type: Article
124
119
  blog_id: 1
125
- id: 14
126
120
  title: Inactive Article
127
121
  body: body
128
122
  extended: extended content
@@ -141,7 +135,6 @@ inactive_article:
141
135
  second_blog_article:
142
136
  type: Article
143
137
  blog_id: 2
144
- id: 16
145
138
  title: Second Blog Article
146
139
  body: body
147
140
  extended: extended content
@@ -160,7 +153,6 @@ second_blog_article:
160
153
  search_target:
161
154
  type: Article
162
155
  blog_id: 1
163
- id: 17
164
156
  title: Find me!
165
157
  body: search target
166
158
  extended: extended content
@@ -179,7 +171,6 @@ search_target:
179
171
  xmltest:
180
172
  type: Article
181
173
  blog_id: 1
182
- id: 18
183
174
  title: Associations aren\'t :dependent => true anymore
184
175
  body: originally seen on <a href="http://blog.rubyonrails.org/">blog.rubyonrails.org</a>
185
176
  extended: extended content
@@ -198,7 +189,6 @@ xmltest:
198
189
  spammed_article:
199
190
  type: Article
200
191
  blog_id: 1
201
- id: 19
202
192
  title: C\'mon Spam Me!
203
193
  body: A bunch of innocuous content
204
194
  allow_comments: true