获取Rails项目中包含的所有gem的更改日志

时间:2022-01-22 00:21:48

I have a Rails project that uses bundler. Many of the gems I'm included are quite a few versions behind the latest available. I know that I could just cross my fingers and run bundle update to get everything up to the latest version, taking into account dependencies, but that could potentially break parts of my app that rely on deprecated gem methods, and might not be worth the effort.

我有一个使用bundler的Rails项目。我所包含的许多宝石都是最新版本背后的几个版本。我知道我可以交叉手指并运行捆绑更新以获取最新版本,考虑到依赖关系,但这可能会破坏我的应用程序中依赖于已弃用的gem方法的部分,并且可能不值得努力。

Is there a way to get the changelogs for all bundled gems between the version set in Gemfile.lock and latest on rubygems? It seems like something that would be a pretty widespread need, but I haven't found any solution...

有没有办法在Gemfile.lock中的版本集和rubygems上的最新版本之间获取所有捆绑宝石的更改日志?这似乎是一个相当普遍的需求,但我还没有找到任何解决方案......

4 个解决方案

#1


6  

That is a really good idea. I haven't heard of any tool that does that currently, so I created a script that does it.

这是一个非常好的主意。我还没有听说过任何当前工具,所以我创建了一个执行它的脚本。

It is very hacky/alpha, but it is still quite effective (more than I thought it would be when I started writing it). So use at your own risk. Hopefully though a feature like this (but much improved) could eventually make it into bundler.

这是非常hacky / alpha,但它仍然非常有效(比我以为我开始编写时更多)。因此使用风险自负。希望尽管像这样的功能(但有很大的改进)最终可能会成为捆绑器。

To use, first commit all changes. Then run the script in the base directory (where your Gemfile.lock file is.

要使用,请先提交所有更改。然后在基目录(Gemfile.lock文件所在的位置)中运行脚本。

It will firstly query all gems in use to find their changelogs. It will then run bundle update. It will then query all gems, find the new ones and diff the changelogs. Finally it will run git checkout Gemfile.lock and bundle install to revert any changes caused by the bundle update command. The results will be saved in a file bundler_gem_diff.txt.

它将首先查询所有正在使用的宝石以查找其更改日志。然后它将运行bundle更新。然后它将查询所有宝石,找到新宝石并区分更改日志。最后,它将运行git checkout Gemfile.lock和bundle install来恢复由bundle update命令引起的任何更改。结果将保存在文件bundler_gem_diff.txt中。

#!/usr/bin/env ruby


def changelog_for_gem(gem)
    changelogs = `bundle exec gem contents #{gem}`.lines.grep(/history|changelog/i)
    if changelogs.empty?
        puts "No changelog found for gem #{gem}"

        return nil
    end
    changelogs.first.chomp
end



class GemDetails
    attr_accessor :name, :version, :changelog_file


    def initialize(name, version)
        @name, @version = name, version
    end
    def self.from_str(str)
        match = str.match(/(\S+) \((.*)\)/)
        result = self.new(match[1], Gem::Version.new(match[2]))
        result.changelog_file = changelog_for_gem(result.name)
        puts "process gem #{result.name}"
        result
    end
end



def bundler_gems
    gem_list = `bundle list`.lines.drop(1).map do |line|
        line.gsub(/\s*\* /, '')
    end

    gem_list.map { |gem_str| GemDetails.from_str(gem_str) }
end

def bundler_update
    system("bundle update")
end

def bundler_install
    system("bundle install")
end


def updated_gems(initial_gems, new_gems)
    result = []
    initial_gems.each do |gem|
        updated_gem = new_gems.find { |new_gem| gem.name == new_gem.name && gem.version < new_gem.version }
        result << [gem, updated_gem] if updated_gem
    end
    result
end


def changelog_diff
    initial_gems = bundler_gems
    puts "Updating bundle"
    system('bundle update')
    new_gems = bundler_gems
    File.open('bundler_gem_diff.txt', 'w') do |f|
        updated_gems(initial_gems, new_gems).each do |gem_pair|
            f.puts "###### #{gem_pair[0].name} #{gem_pair[0].version} -> #{gem_pair[1].version} ######"
            if gem_pair[0].changelog_file && gem_pair[1].changelog_file
                puts "diff #{gem_pair[0].changelog_file} #{gem_pair[1].changelog_file}"
                f.puts `diff #{gem_pair[0].changelog_file} #{gem_pair[1].changelog_file}`
            else
                f.puts "Missing changelogs"
            end
        end
    end
    system('git checkout Gemfile.lock')
    system('bundle install')
    nil
end


changelog_diff

Here is the output of me running it on my octopress blog installation (rather long, mainly because kramdown uses git log as their changelog):

这是我在我的octopress博客安装上运行它的输出(相当长,主要是因为kramdown使用git log作为他们的更改日志):

###### RedCloth 4.2.8 -> 4.2.9 ######
0a1,5
> == 4.2.9 / November 25, 2011
> 
> * Fix RbConfig / Config warning in Ruby 1.9.3. [Steve Purcell, Robert Gleeson, and unclaimedbaggage]
> * Use RSTRING_NOT_MODIFIED header for Rubinius [Dirkjan Bussink]
> 
###### activesupport 3.2.0 -> 3.2.2 ######
0a1,12
> ## Rails 3.2.1 (January 26, 2012) ##
> 
> *   Documentation fixes and improvements.
> 
> *   Update time zone offset information. *Ravil Bayramgalin*
> 
> *   The deprecated `ActiveSupport::Base64.decode64` calls `::Base64.decode64`
>     now. *Jonathan Viney*
> 
> *   Fixes uninitialized constant `ActiveSupport::TaggedLogging::ERROR`. *kennyj*
> 
> 
###### chunky_png 1.2.1 -> 1.2.5 ######
Missing changelogs
###### compass 0.11.5 -> 0.11.7 ######
Missing changelogs
###### directory_watcher 1.4.0 -> 1.4.1 ######
0a1,5
> == 1.4.1 / 2011-08-29
> 
> Minor Enhancements
> - support for latest 'cool.io'
> 
###### fssm 0.2.7 -> 0.2.8.1 ######
Missing changelogs
###### haml 3.1.2 -> 3.1.4 ######
6c6,119
< ## 3.1.0 (Unreleased)
---
> ## 3.1.11
> 
> * Allow control directives (such as `@if`) to be nested beneath properties.
> * Allow property names to begin with a hyphen followed by interpolation (e.g. `-#{...}`).
> * Fix a parsing error with interpolation in comma-separated lists.
> * Make `--cache-store` with with `--update`.
> * Properly report `ArgumentError`s that occur within user-defined functions.
> * Don't crash on JRuby if the underlying Java doesn't support every Unicode encoding.
> * Add new `updated_stylesheet` callback, which is run after each stylesheet has
>   been successfully compiled. Thanks to [Christian Peters](https://github.com/ChristianPeters).
> * Allow absolute paths to be used in an importer with a different root.
> * Don't destructively modify the options when running `Sass::Plugin.force_update`.
> 
> ### Deprecations -- Must Read!
> 
> * The `updating_stylesheet` is deprecated and will be removed in a
>   future release. Use the new `updated_stylesheet` callback instead.
> 
> ## 3.1.10
> 
> * Fix another aspect of the 3.1.8 regression relating to `+`.
> 
> ## 3.1.9
> 
> * Fix a regression in 3.1.8 that broke the `+` combinator in selectors.
> 
> * Deprecate the loud-comment flag when used with silent comments (e.g. `//!`).
>   Using it with multi-line comments (e.g. `/*!`) still works.
> 
> ## 3.1.8
> 
> * Deprecate parent selectors followed immediately by identifiers (e.g. `&foo`).
>   This should never have worked, since it violates the rule
>   of `&` only being usable where an element selector would.
> 
> * Add a `--force` option to the `sass` executable which makes `--update`
>   always compile all stylesheets, even if the CSS is newer.
> 
> * Disallow semicolons at the end of `@import` directives in the indented syntax.
> 
> * Don't error out when being used as a library without requiring `fileutil`.
> 
> * Don't crash when Compass-style sprite imports are used with `StalenessChecker`
>   (thanks to [Matthias Bauer](https://github.com/moeffju)).
> 
> * The numeric precision of numbers in Sass can now be set using the
>   `--precision` option to the command line. Additionally, the default
>   number of digits of precision in Sass output can now be
>   changed by setting `Sass::Script::Number.precision` to an integer
>   (defaults to 3). Since this value can now be changed, the `PRECISION`
>   constant in `Sass::Script::Number` has been deprecated. In the unlikely
>   event that you were using it in your code, you should now use
>    `Sass::Script::Number.precision_factor` instead.
> 
> * Don't crash when running `sass-convert` with selectors with two commas in a row.
> 
> * Explicitly require Ruby >= 1.8.7 (thanks [Eric Mason](https://github.com/ericmason)).
> 
> * Properly validate the nesting of elements in imported stylesheets.
> 
> * Properly compile files in parent directories with `--watch` and `--update`.
> 
> * Properly null out options in mixin definitions before caching them. This fixes
>   a caching bug that has been plaguing some Rails 3.1 users.
> 
> ## 3.1.7
> 
> * Don't crash when doing certain operations with `@function`s.
> 
> ## 3.1.6
> 
> * The option `:trace_selectors` can now be used to emit a full trace
>   before each selector. This can be helpful for in-browser debugging of
>   stylesheet imports and mixin includes. This option supersedes the
>   `:line_comments` option and is superseded by the `:debug_info`
>   option.
> 
> * Fix a bug where long `@if`/`@else` chains would cause exponential slowdown
>   under some circumstances.
> 
> ## 3.1.5
> 
> * Updated the vendored FSSM version, which will avoid segfaults on OS
>   X Lion when using `--watch`.
> 
> ## 3.1.4
> 
> * Sass no longer unnecessarily caches the sass options hash.
>   This allows objects that cannot be marshaled to be placed into the
>   options hash.
> 
> ## 3.1.3
> 
> * Sass now logs message thru a logger object which can be changed to
>   provide integration with other frameworks' logging infrastructure.
> 
> 
> ## 3.1.2
> 
> * Fix some issues that were breaking Sass when running within Rubinius.
> * Fix some issues that were affecting Rails 3.1 integration.
> * New function `zip` allows several lists to be combined into one
>   list of lists. For example:
>   `zip(1px 1px 3px, solid dashed solid, red green blue)` becomes
>   `1px solid red, 1px dashed green, 3px solid blue`
> * New function `index` returns the list index of a value
>   within a list. For example: `index(1px solid red, solid)`
>   returns `2`. When the value is not found `false` is returned.
> 
> ## 3.1.1
> 
> * Make sure `Sass::Plugin` is loaded at the correct time in Rails 3.
> 
> ## 3.1.0
138c251
< However, you can now do more with them using the new {file:Sass/Script/Functions.html#list-functions list functions}:
---
> However, you can now do more with them using the new [list functions](Sass/Script/Functions.html#list-functions):
###### jekyll 0.11.0 -> 0.11.2 ######
0a1,9
> == 0.11.2 / 2011-12-27
>   * Bug Fixes
>     * Fix gemspec
> 
> == 0.11.1 / 2011-12-27
>   * Bug Fixes
>     * Fix extra blank line in highlight blocks (#409)
>     * Update dependencies
> 
###### kramdown 0.13.3 -> 0.13.5 ######
0a1,429
> commit ce785c7cc29372cb7c5c47647535b1943348aff6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 15:34:37 2012 +0100
> 
>     Updated release notes, version number and benchmark graphs
> 
> doc/img/graph-ruby-1.8.5-231.png
> doc/img/graph-ruby-1.8.6-399.png
> doc/img/graph-ruby-1.8.7-249.png
> doc/img/graph-ruby-1.8.7-302.png
> doc/img/graph-ruby-1.9.2p136-136.png
> doc/img/graph-ruby-1.9.3p0-0.png
> doc/img/graph-ruby-1.9.3p125-125.png
> doc/news/release_0_13_5.page
> doc/sidebar.template
> doc/tests.page
> lib/kramdown/version.rb
> 
> commit 90f0583232e814334b2bb8c7fa3228b2f4e30f81
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 10:14:58 2012 +0100
> 
>     Bug fix: Empty id attributes are handled better now
>     
>     * The HTML converter does not output empty id attributes anymore.
>     * The kramdown converter now always converts empty id attributes
>       to IAL form.
> 
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/utils/html.rb
> test/testcases/block/04_header/with_auto_ids.html
> test/testcases/block/04_header/with_auto_ids.text
> 
> commit d956b98fdf449af145bc8b52539abdb99a062cda
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:53:03 2012 +0100
> 
>     Small typo fix in quickref
> 
> doc/quickref.page
> 
> commit 4df3c5aaad763cc9d8fd4b129a5cdd245ed5a7f7
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:38:29 2012 +0100
> 
>     Updated homepage contents
> 
> doc/documentation.page
> doc/index.page
> doc/installation.page
> doc/news.page
> doc/syntax.page
> doc/tests.page
> 
> commit c0bcd765e131b671661af70274ce632111ad89bb
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:37:15 2012 +0100
> 
>     Updated website design
> 
> doc/bg.png
> doc/default.scss.css
> doc/default.template
> doc/design.scss.css
> doc/sidebar.template
> 
> commit d530421d0a3794010cd0c022decb097158e90732
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:35:51 2012 +0100
> 
>     Disabling line numbers in code listings on homepage
> 
> Rakefile
> 
> commit a47a5c49e35f9ccb220dca7b5b8ac7d585026ef6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:25:01 2012 +0100
> 
>     Updated copyright notice updating code
> 
> Rakefile
> 
> commit 21ce307a6766d131bf3a61de1142d88b0bd0a8be
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:24:22 2012 +0100
> 
>     Updated copyright notices
> 
> bin/kramdown
> lib/kramdown.rb
> lib/kramdown/compatibility.rb
> lib/kramdown/converter.rb
> lib/kramdown/converter/base.rb
> lib/kramdown/converter/html.rb
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/converter/latex.rb
> lib/kramdown/converter/toc.rb
> lib/kramdown/document.rb
> lib/kramdown/element.rb
> lib/kramdown/error.rb
> lib/kramdown/options.rb
> lib/kramdown/parser.rb
> lib/kramdown/parser/base.rb
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown.rb
> lib/kramdown/parser/kramdown/abbreviation.rb
> lib/kramdown/parser/kramdown/autolink.rb
> lib/kramdown/parser/kramdown/blank_line.rb
> lib/kramdown/parser/kramdown/block_boundary.rb
> lib/kramdown/parser/kramdown/blockquote.rb
> lib/kramdown/parser/kramdown/codeblock.rb
> lib/kramdown/parser/kramdown/codespan.rb
> lib/kramdown/parser/kramdown/emphasis.rb
> lib/kramdown/parser/kramdown/eob.rb
> lib/kramdown/parser/kramdown/escaped_chars.rb
> lib/kramdown/parser/kramdown/extensions.rb
> lib/kramdown/parser/kramdown/footnote.rb
> lib/kramdown/parser/kramdown/header.rb
> lib/kramdown/parser/kramdown/horizontal_rule.rb
> lib/kramdown/parser/kramdown/html.rb
> lib/kramdown/parser/kramdown/html_entity.rb
> lib/kramdown/parser/kramdown/line_break.rb
> lib/kramdown/parser/kramdown/link.rb
> lib/kramdown/parser/kramdown/list.rb
> lib/kramdown/parser/kramdown/math.rb
> lib/kramdown/parser/kramdown/paragraph.rb
> lib/kramdown/parser/kramdown/smart_quotes.rb
> lib/kramdown/parser/kramdown/table.rb
> lib/kramdown/parser/kramdown/typographic_symbol.rb
> lib/kramdown/parser/markdown.rb
> lib/kramdown/utils.rb
> lib/kramdown/utils/entities.rb
> lib/kramdown/utils/html.rb
> lib/kramdown/utils/ordered_hash.rb
> lib/kramdown/version.rb
> test/run_tests.rb
> test/test_files.rb
> 
> commit 512b00a6d050f506c43b824861f7bbf459862a19
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:12:38 2012 +0100
> 
>     Fixed bug RF#29521: HTML math output not always XHTML compatible
>     
>     The characters < and & are not allowed in a script tag in XHTML.
>     So since the HTML converter uses script tags for math elements,
>     whenever these characters appear in a value the value is wrapped
>     in a CDATA section to make the output XHTML compatible.
> 
> lib/kramdown/converter/html.rb
> lib/kramdown/parser/html.rb
> test/testcases/block/15_math/normal.html
> 
> commit 8f111947dbcea064a997662d65cd53e6e39c8c40
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Feb 18 20:06:42 2012 +0100
> 
>     Fixed bug RF#29520: inline math statements interpreted as math blocks
>     
>     If a paragraph started and ended with an inline math statement, it was
>     parsed as math block. This is fixed now.
>     
>     Also, it is now better explained in the kramdown syntax documentation
>     how special cases are handled.
> 
> doc/syntax.page
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/parser/kramdown/math.rb
> test/testcases/span/math/normal.html
> test/testcases/span/math/normal.text
> 
> commit f5b585513508704563cc0bb343869f91520ff853
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Feb 18 11:11:45 2012 +0100
> 
>     Fixed problem with missing methods/constants on older Ruby 1.8.6 versions
> 
> lib/kramdown/compatibility.rb
> 
> commit 394d5de7cad34ed5e0bdcfc0fcc7a1a28b3f0229
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Jan 31 17:32:09 2012 +0100
> 
>     Moved camelize method from Document#method_to_class_name to Utils.camelize
> 
> lib/kramdown/document.rb
> lib/kramdown/utils.rb
> 
> commit 7adc3bda20a8290f0af588da7816eec591d4ecaa
> Author: tomykaira <tomykaira@gmail.com>
> Date:   Fri Dec 30 18:08:43 2011 +0900
> 
>     Fix Document#method_missing to accept snake_cased class name
>     
>     When doc.to_my_converter is called, it should use MyConverter, but used My_converter
> 
> lib/kramdown/document.rb
> 
> commit a6b181a9baf2eeeabeb55a1a9d5b26791fecad08
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Jan 21 12:18:22 2012 +0100
> 
>     HTML attributes names are now converted to lower case
> 
> doc/syntax.page
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown/html.rb
> test/testcases/block/09_html/html5_attributes.html
> test/testcases/block/09_html/simple.text
> test/testcases/span/05_html/normal.text
> 
> commit 170ca36a60d823803f575bf5632d9e9d1e74f7db
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Jan 21 12:05:31 2012 +0100
> 
>     HTML attributes without values are now supported
>     
>     This means that one can write boolean HTML attributes now without
>     assigning an empty value.
> 
> doc/syntax.page
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown/html.rb
> test/testcases/block/09_html/html5_attributes.html
> test/testcases/block/09_html/html5_attributes.text
> test/testcases/span/05_html/normal.html
> test/testcases/span/05_html/normal.text
> 
> commit 2c1d7c5e66bfe42052dc43374e123a48e7cb2ad6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Fri Dec 16 18:40:15 2011 +0100
> 
>     Fix to work with newer RDoc versions
> 
> Rakefile
> 
> commit 2a93cbc0e1bbe705159c645ae617538bad125394
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Fri Dec 16 18:26:32 2011 +0100
> 
>     Updated release notes, version number and benchmark graphs
> 
> doc/img/graph-jruby-1.6.0-330.png
> doc/img/graph-ruby-1.8.5-231.png
> doc/img/graph-ruby-1.8.6-399.png
> doc/img/graph-ruby-1.8.7-249.png
> doc/img/graph-ruby-1.8.7-302.png
> doc/img/graph-ruby-1.9.2p136-136.png
> doc/img/graph-ruby-1.9.3p0-0.png
> doc/index.page
> doc/news/release_0_13_4.page
> doc/news/release_0_X_X.page
> doc/tests.page
> lib/kramdown/version.rb
> 
> commit dbbabbc5b61b67ed0d22c1aa4a6b17608ed771e6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Dec 13 17:25:53 2011 +0100
> 
>     Fixed test case to work with coderay 1.0
> 
> test/testcases/block/12_extension/options3.html
> 
> commit 6828b83435c30676185d675dc7b6054846606df0
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Dec 13 17:25:31 2011 +0100
> 
>     Updated Rakefile and setup.rb
>     
>     * Use gem package task supplied by rubygems
>     * Add coderay as development dependency
>     * Fix warning in setup.rb because of Config::CONFIG use
> 
> Rakefile
> setup.rb
> 
> commit bb7e82ce3f5213830fa6387e6c790a75b919dd38
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Dec 13 17:23:51 2011 +0100
> 
>     Fixed problem with different Array#delete_if internals on Ruby 1.9.3
>     
>     See http://redmine.ruby-lang.org/issues/5752
> 
> lib/kramdown/parser/html.rb
> 
> commit cd253a5e9d4dcfe55c12caf9257e4f1fb6113943
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 15:40:35 2011 +0100
> 
>     Fixed warnings on Ruby 1.9.3
> 
> lib/kramdown/converter/html.rb
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown.rb
> lib/kramdown/parser/kramdown/header.rb
> lib/kramdown/parser/kramdown/html.rb
> lib/kramdown/parser/kramdown/smart_quotes.rb
> test/test_files.rb
> 
> commit e71cc414755e51c3336551e3f011f2f39ea601ee
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 15:32:52 2011 +0100
> 
>     Fixed test cases to correctly behave with new footnote rel output
> 
> test/testcases/block/12_extension/options.html
> test/testcases/block/12_extension/options2.html
> test/testcases/block/14_table/table_with_footnote.html
> 
> commit b3b2ebc233160f4f649f0d0aed070d7540781c4f
> Merge: a58ba5b ef70112
> Author: gettalong <t_leitner@gmx.at>
> Date:   Sun Dec 11 06:26:18 2011 -0800
> 
>     Merge pull request #4 from joefiorini/master
>     
>     HTML5 Compatibility for Footnotes
>     
>     Replacing the rev='footnote' with rel='reference'.
> 
> commit a58ba5b364081e896e2a49cc06db5aec643f8bb4
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 12:38:37 2011 +0100
> 
>     Fixed bug RF#29426: Content of <style> tags is treated as raw text now
> 
> lib/kramdown/parser/html.rb
> test/testcases/block/09_html/parse_as_raw.html
> test/testcases/block/09_html/parse_as_raw.htmlinput
> test/testcases/block/09_html/parse_as_raw.text
> 
> commit 14800a606565ff7d1759fea9815be1f9eff9b633
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 12:27:52 2011 +0100
> 
>     Fixed bug RF#29350: Parsing of HTML tags with mismatched case now works
> 
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown/html.rb
> test/test_files.rb
> test/testcases/block/09_html/parse_as_raw.htmlinput
> test/testcases/block/09_html/parse_as_raw.text
> test/testcases/block/09_html/parse_as_span.htmlinput
> test/testcases/block/09_html/parse_as_span.text
> test/testcases/block/09_html/parse_block_html.text
> test/testcases/span/05_html/normal.html
> test/testcases/span/05_html/normal.text
> 
> commit b585efb3086c3462a573b57d060dfd203070bcc1
> Merge: 64a4e7e 3a72b72
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Sep 24 14:41:34 2011 +0200
> 
>     Merge branch 'master' of github.com:gettalong/kramdown
> 
> commit 3a72b72564d4f788fa1423dd8eb1089e355b0a4c
> Merge: e6c1b12 df5e705
> Author: gettalong <t_leitner@gmx.at>
> Date:   Sat Sep 24 05:28:10 2011 -0700
> 
>     Merge pull request #5 from jacius/span
>     
>     span tags must have a separate closing tag to be valid HTML.
> 
> commit e6c1b12fa45c7b3284c4b41247ade9ff4b4379a4
> Merge: 9188906 1270445
> Author: gettalong <t_leitner@gmx.at>
> Date:   Sat Sep 24 05:24:32 2011 -0700
> 
>     Merge pull request #6 from postmodern/patch-1
>     
>     Fixed a typo. --output not --ouput
> 
> commit 12704459192bdcbf9b02d1d90483c8d835f3e9f1
> Author: Postmodern <postmodern.mod3@gmail.com>
> Date:   Thu Aug 4 18:57:59 2011 -0700
> 
>     Fixed a typo. --output not --ouput
> 
> bin/kramdown
> 
> commit df5e705ef41ca2c47b5b0d54509cdfb80c2d5f4d
> Author: John Croisant <jacius@gmail.com>
> Date:   Sun Jul 10 23:52:35 2011 -0500
> 
>     span tags must have a separate closing tag to be valid HTML.
>     
>     "<span />" is invalid markup in HTML 4 and 5, but valid in XHTML.
>     "<span></span>" is valid in all three, so it should be used instead.
> 
> lib/kramdown/converter/html.rb
> test/testcases/span/05_html/normal.html
> test/testcases/span/05_html/normal.text
> 
> commit ef7011229e7d93c31c22468e5cfd797051ac280c
> Author: Joe Fiorini <joe@faithfulgeek.org>
> Date:   Wed May 11 02:08:38 2011 -0400
> 
>     Replace rev attribute for HTML5 compatibility
> 
> lib/kramdown/converter/html.rb
> test/testcases/span/04_footnote/footnote_nr.html
> test/testcases/span/04_footnote/markers.html
> 
> commit 64a4e7e61da0d720ffd702fd6c45cefafc568d24
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue May 10 20:47:16 2011 +0200
> 
>     Added a TOC converter
>     
>     The TOC converter can be used to get an element tree containing the
>     table of contents. Since it uses a custom element type the resulting
>     tree cannot be fed directly to any converter.
> 
> doc/news/release_0_X_X.page
> lib/kramdown/converter.rb
> lib/kramdown/converter/toc.rb
> 
> commit 5ed13d24d9375771e3a0bd0d4fbe779d0043563b
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue May 10 07:42:23 2011 +0200
> 
>     Extracted Element class into own file and made some small doc fixes
> 
> lib/kramdown/document.rb
> lib/kramdown/element.rb
> 
###### liquid 2.2.2 -> 2.3.0 ######
1c1,16
< 2.2.1 / 2010-08-23
---
> # Liquid Version History
> 
> ## 2.3.0
> 
> * Several speed/memory improvements
> * Numerous bug fixes
> * Added support for MRI 1.9, Rubinius, and JRuby
> * Added support for integer drop parameters
> * Added epoch support to `date` filter
> * New `raw` tag that suppresses parsing
> * Added `else` option to `for` tag
> * New `increment` tag
> * New `split` filter
> 
> 
> ## 2.2.1 / 2010-08-23
5c20,21
< 2.2.0 / 2010-08-22
---
> 
> ## 2.2.0 / 2010-08-22
10c26,27
< 1.9.0 / 2008-03-04
---
> 
> ## 1.9.0 / 2008-03-04
15,17d31
< Before 1.9.0
< 
< * Added If with or / and expressions
19c33
< * Implemented .to_liquid for all objects which can be passed to liquid like Strings Arrays Hashes Numerics and Booleans. To export new objects to liquid just implement .to_liquid on them and return objects which themselves have .to_liquid methods. 
---
> ## Before 1.9.0
20a35,36
> * Added If with or / and expressions
> * Implemented .to_liquid for all objects which can be passed to liquid like Strings Arrays Hashes Numerics and Booleans. To export new objects to liquid just implement .to_liquid on them and return objects which themselves have .to_liquid methods.
22d37
< 
24d38
< 
26d39
< 
28d40
< 
30d41
< 
32d42
< 
34d43
< 
36d44
< 
38,42c46,47
<   
<   {{ 'Typo' | link_to: 'http://typo.leetsoft.com', 'Typo - a modern weblog engine' }}
<   
< 
< * Added Liquid::Drop. A base class which you can use for exporting proxy objects to liquid which can acquire more data when used in liquid. [Tobias Luetke] 
---
>     {{ 'Typo' | link_to: 'http://typo.leetsoft.com', 'Typo - a modern weblog engine' }}
> * Added Liquid::Drop. A base class which you can use for exporting proxy objects to liquid which can acquire more data when used in liquid. [Tobias Luetke]
48c53
<   end   
---
>   end
51,52d55
< 
< 
###### multi_json 1.0.4 -> 1.1.0 ######
Missing changelogs
###### rack 1.3.2 -> 1.4.1 ######
Missing changelogs
###### rake 0.9.2 -> 0.9.2.2 ######
Missing changelogs
###### rb-fsevent 0.4.3.1 -> 0.9.0 ######
Missing changelogs
###### sass 3.1.5 -> 3.1.15 ######
Missing changelogs
###### stringex 1.3.0 -> 1.3.2 ######
Missing changelogs
###### tilt 1.3.2 -> 1.3.3 ######
Missing changelogs

#2


0  

This doesn't exactly answer your question, but it may be helpful to know how Gem version numbers work. According to the specification, the first of the three numbers in a gem version should tell you whether the gem is guaranteed to be backwards compatible.

这并不能完全回答您的问题,但了解Gem版本号的工作原理可能会有所帮助。根据规范,gem版本中的三个数字中的第一个应该告诉您宝石是否保证向后兼容。

For example, if you start your project with some gem version 3.1.0, it should be compatible with any 3.x.x version of the gem. According to the spec, "A category 3 change (incompatible) will increment the major version number and reset the minor and build numbers"

例如,如果您使用某个gem版本3.1.0启动项目,它应该与任何3.x.x版本的gem兼容。根据规范,“类别3更改(不兼容)将增加主要版本号并重置次要和构建数字”

See here for details: http://docs.rubygems.org/read/chapter/7

有关详细信息,请参见此处:http://docs.rubygems.org/read/chapter/7

You might also find this post about freezing gem versions to test out new ones helpful: https://*.com/a/2147227/834512

您可能还会发现这篇关于冻结宝石版本以测试新的有用的帖子:https://*.com/a/2147227/834512

#3


0  

Is the new bundle outdated command suiting your needs?

新捆绑包过时的命令是否适合您的需求?

http://patshaughnessy.net/2011/11/5/besides-being-faster-what-else-is-new-in-bundler-1-1

http://patshaughnessy.net/2011/11/5/besides-being-faster-what-else-is-new-in-bundler-1-1

The most useful and important new command introduced in Bundler 1.1 is bundle outdated, which will identify the outdated gems in your bundle – these are the gems for which there is a newer version available

Bundler 1.1中引入的最有用和最重要的新命令是bundle outdated,它将识别你的bundle中过时的gem - 这些是有更新版本的gem

#4


0  

There is also a nice webservice which is free for public open source projects (github service hook available): http://Gemnasium.com

还有一个很好的Web服务,可以免费用于公共开源项目(可用的github服务钩子):http://Gemnasium.com

It checks which gems are up to date and serves an overview plus email notifications about what has changed between versions (github tag compare diff).

它会检查哪些宝石是最新的,并提供概述以及有关版本之间发生变化的电子邮件通知(github标记比较差异)。

#1


6  

That is a really good idea. I haven't heard of any tool that does that currently, so I created a script that does it.

这是一个非常好的主意。我还没有听说过任何当前工具,所以我创建了一个执行它的脚本。

It is very hacky/alpha, but it is still quite effective (more than I thought it would be when I started writing it). So use at your own risk. Hopefully though a feature like this (but much improved) could eventually make it into bundler.

这是非常hacky / alpha,但它仍然非常有效(比我以为我开始编写时更多)。因此使用风险自负。希望尽管像这样的功能(但有很大的改进)最终可能会成为捆绑器。

To use, first commit all changes. Then run the script in the base directory (where your Gemfile.lock file is.

要使用,请先提交所有更改。然后在基目录(Gemfile.lock文件所在的位置)中运行脚本。

It will firstly query all gems in use to find their changelogs. It will then run bundle update. It will then query all gems, find the new ones and diff the changelogs. Finally it will run git checkout Gemfile.lock and bundle install to revert any changes caused by the bundle update command. The results will be saved in a file bundler_gem_diff.txt.

它将首先查询所有正在使用的宝石以查找其更改日志。然后它将运行bundle更新。然后它将查询所有宝石,找到新宝石并区分更改日志。最后,它将运行git checkout Gemfile.lock和bundle install来恢复由bundle update命令引起的任何更改。结果将保存在文件bundler_gem_diff.txt中。

#!/usr/bin/env ruby


def changelog_for_gem(gem)
    changelogs = `bundle exec gem contents #{gem}`.lines.grep(/history|changelog/i)
    if changelogs.empty?
        puts "No changelog found for gem #{gem}"

        return nil
    end
    changelogs.first.chomp
end



class GemDetails
    attr_accessor :name, :version, :changelog_file


    def initialize(name, version)
        @name, @version = name, version
    end
    def self.from_str(str)
        match = str.match(/(\S+) \((.*)\)/)
        result = self.new(match[1], Gem::Version.new(match[2]))
        result.changelog_file = changelog_for_gem(result.name)
        puts "process gem #{result.name}"
        result
    end
end



def bundler_gems
    gem_list = `bundle list`.lines.drop(1).map do |line|
        line.gsub(/\s*\* /, '')
    end

    gem_list.map { |gem_str| GemDetails.from_str(gem_str) }
end

def bundler_update
    system("bundle update")
end

def bundler_install
    system("bundle install")
end


def updated_gems(initial_gems, new_gems)
    result = []
    initial_gems.each do |gem|
        updated_gem = new_gems.find { |new_gem| gem.name == new_gem.name && gem.version < new_gem.version }
        result << [gem, updated_gem] if updated_gem
    end
    result
end


def changelog_diff
    initial_gems = bundler_gems
    puts "Updating bundle"
    system('bundle update')
    new_gems = bundler_gems
    File.open('bundler_gem_diff.txt', 'w') do |f|
        updated_gems(initial_gems, new_gems).each do |gem_pair|
            f.puts "###### #{gem_pair[0].name} #{gem_pair[0].version} -> #{gem_pair[1].version} ######"
            if gem_pair[0].changelog_file && gem_pair[1].changelog_file
                puts "diff #{gem_pair[0].changelog_file} #{gem_pair[1].changelog_file}"
                f.puts `diff #{gem_pair[0].changelog_file} #{gem_pair[1].changelog_file}`
            else
                f.puts "Missing changelogs"
            end
        end
    end
    system('git checkout Gemfile.lock')
    system('bundle install')
    nil
end


changelog_diff

Here is the output of me running it on my octopress blog installation (rather long, mainly because kramdown uses git log as their changelog):

这是我在我的octopress博客安装上运行它的输出(相当长,主要是因为kramdown使用git log作为他们的更改日志):

###### RedCloth 4.2.8 -> 4.2.9 ######
0a1,5
> == 4.2.9 / November 25, 2011
> 
> * Fix RbConfig / Config warning in Ruby 1.9.3. [Steve Purcell, Robert Gleeson, and unclaimedbaggage]
> * Use RSTRING_NOT_MODIFIED header for Rubinius [Dirkjan Bussink]
> 
###### activesupport 3.2.0 -> 3.2.2 ######
0a1,12
> ## Rails 3.2.1 (January 26, 2012) ##
> 
> *   Documentation fixes and improvements.
> 
> *   Update time zone offset information. *Ravil Bayramgalin*
> 
> *   The deprecated `ActiveSupport::Base64.decode64` calls `::Base64.decode64`
>     now. *Jonathan Viney*
> 
> *   Fixes uninitialized constant `ActiveSupport::TaggedLogging::ERROR`. *kennyj*
> 
> 
###### chunky_png 1.2.1 -> 1.2.5 ######
Missing changelogs
###### compass 0.11.5 -> 0.11.7 ######
Missing changelogs
###### directory_watcher 1.4.0 -> 1.4.1 ######
0a1,5
> == 1.4.1 / 2011-08-29
> 
> Minor Enhancements
> - support for latest 'cool.io'
> 
###### fssm 0.2.7 -> 0.2.8.1 ######
Missing changelogs
###### haml 3.1.2 -> 3.1.4 ######
6c6,119
< ## 3.1.0 (Unreleased)
---
> ## 3.1.11
> 
> * Allow control directives (such as `@if`) to be nested beneath properties.
> * Allow property names to begin with a hyphen followed by interpolation (e.g. `-#{...}`).
> * Fix a parsing error with interpolation in comma-separated lists.
> * Make `--cache-store` with with `--update`.
> * Properly report `ArgumentError`s that occur within user-defined functions.
> * Don't crash on JRuby if the underlying Java doesn't support every Unicode encoding.
> * Add new `updated_stylesheet` callback, which is run after each stylesheet has
>   been successfully compiled. Thanks to [Christian Peters](https://github.com/ChristianPeters).
> * Allow absolute paths to be used in an importer with a different root.
> * Don't destructively modify the options when running `Sass::Plugin.force_update`.
> 
> ### Deprecations -- Must Read!
> 
> * The `updating_stylesheet` is deprecated and will be removed in a
>   future release. Use the new `updated_stylesheet` callback instead.
> 
> ## 3.1.10
> 
> * Fix another aspect of the 3.1.8 regression relating to `+`.
> 
> ## 3.1.9
> 
> * Fix a regression in 3.1.8 that broke the `+` combinator in selectors.
> 
> * Deprecate the loud-comment flag when used with silent comments (e.g. `//!`).
>   Using it with multi-line comments (e.g. `/*!`) still works.
> 
> ## 3.1.8
> 
> * Deprecate parent selectors followed immediately by identifiers (e.g. `&foo`).
>   This should never have worked, since it violates the rule
>   of `&` only being usable where an element selector would.
> 
> * Add a `--force` option to the `sass` executable which makes `--update`
>   always compile all stylesheets, even if the CSS is newer.
> 
> * Disallow semicolons at the end of `@import` directives in the indented syntax.
> 
> * Don't error out when being used as a library without requiring `fileutil`.
> 
> * Don't crash when Compass-style sprite imports are used with `StalenessChecker`
>   (thanks to [Matthias Bauer](https://github.com/moeffju)).
> 
> * The numeric precision of numbers in Sass can now be set using the
>   `--precision` option to the command line. Additionally, the default
>   number of digits of precision in Sass output can now be
>   changed by setting `Sass::Script::Number.precision` to an integer
>   (defaults to 3). Since this value can now be changed, the `PRECISION`
>   constant in `Sass::Script::Number` has been deprecated. In the unlikely
>   event that you were using it in your code, you should now use
>    `Sass::Script::Number.precision_factor` instead.
> 
> * Don't crash when running `sass-convert` with selectors with two commas in a row.
> 
> * Explicitly require Ruby >= 1.8.7 (thanks [Eric Mason](https://github.com/ericmason)).
> 
> * Properly validate the nesting of elements in imported stylesheets.
> 
> * Properly compile files in parent directories with `--watch` and `--update`.
> 
> * Properly null out options in mixin definitions before caching them. This fixes
>   a caching bug that has been plaguing some Rails 3.1 users.
> 
> ## 3.1.7
> 
> * Don't crash when doing certain operations with `@function`s.
> 
> ## 3.1.6
> 
> * The option `:trace_selectors` can now be used to emit a full trace
>   before each selector. This can be helpful for in-browser debugging of
>   stylesheet imports and mixin includes. This option supersedes the
>   `:line_comments` option and is superseded by the `:debug_info`
>   option.
> 
> * Fix a bug where long `@if`/`@else` chains would cause exponential slowdown
>   under some circumstances.
> 
> ## 3.1.5
> 
> * Updated the vendored FSSM version, which will avoid segfaults on OS
>   X Lion when using `--watch`.
> 
> ## 3.1.4
> 
> * Sass no longer unnecessarily caches the sass options hash.
>   This allows objects that cannot be marshaled to be placed into the
>   options hash.
> 
> ## 3.1.3
> 
> * Sass now logs message thru a logger object which can be changed to
>   provide integration with other frameworks' logging infrastructure.
> 
> 
> ## 3.1.2
> 
> * Fix some issues that were breaking Sass when running within Rubinius.
> * Fix some issues that were affecting Rails 3.1 integration.
> * New function `zip` allows several lists to be combined into one
>   list of lists. For example:
>   `zip(1px 1px 3px, solid dashed solid, red green blue)` becomes
>   `1px solid red, 1px dashed green, 3px solid blue`
> * New function `index` returns the list index of a value
>   within a list. For example: `index(1px solid red, solid)`
>   returns `2`. When the value is not found `false` is returned.
> 
> ## 3.1.1
> 
> * Make sure `Sass::Plugin` is loaded at the correct time in Rails 3.
> 
> ## 3.1.0
138c251
< However, you can now do more with them using the new {file:Sass/Script/Functions.html#list-functions list functions}:
---
> However, you can now do more with them using the new [list functions](Sass/Script/Functions.html#list-functions):
###### jekyll 0.11.0 -> 0.11.2 ######
0a1,9
> == 0.11.2 / 2011-12-27
>   * Bug Fixes
>     * Fix gemspec
> 
> == 0.11.1 / 2011-12-27
>   * Bug Fixes
>     * Fix extra blank line in highlight blocks (#409)
>     * Update dependencies
> 
###### kramdown 0.13.3 -> 0.13.5 ######
0a1,429
> commit ce785c7cc29372cb7c5c47647535b1943348aff6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 15:34:37 2012 +0100
> 
>     Updated release notes, version number and benchmark graphs
> 
> doc/img/graph-ruby-1.8.5-231.png
> doc/img/graph-ruby-1.8.6-399.png
> doc/img/graph-ruby-1.8.7-249.png
> doc/img/graph-ruby-1.8.7-302.png
> doc/img/graph-ruby-1.9.2p136-136.png
> doc/img/graph-ruby-1.9.3p0-0.png
> doc/img/graph-ruby-1.9.3p125-125.png
> doc/news/release_0_13_5.page
> doc/sidebar.template
> doc/tests.page
> lib/kramdown/version.rb
> 
> commit 90f0583232e814334b2bb8c7fa3228b2f4e30f81
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 10:14:58 2012 +0100
> 
>     Bug fix: Empty id attributes are handled better now
>     
>     * The HTML converter does not output empty id attributes anymore.
>     * The kramdown converter now always converts empty id attributes
>       to IAL form.
> 
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/utils/html.rb
> test/testcases/block/04_header/with_auto_ids.html
> test/testcases/block/04_header/with_auto_ids.text
> 
> commit d956b98fdf449af145bc8b52539abdb99a062cda
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:53:03 2012 +0100
> 
>     Small typo fix in quickref
> 
> doc/quickref.page
> 
> commit 4df3c5aaad763cc9d8fd4b129a5cdd245ed5a7f7
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:38:29 2012 +0100
> 
>     Updated homepage contents
> 
> doc/documentation.page
> doc/index.page
> doc/installation.page
> doc/news.page
> doc/syntax.page
> doc/tests.page
> 
> commit c0bcd765e131b671661af70274ce632111ad89bb
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:37:15 2012 +0100
> 
>     Updated website design
> 
> doc/bg.png
> doc/default.scss.css
> doc/default.template
> doc/design.scss.css
> doc/sidebar.template
> 
> commit d530421d0a3794010cd0c022decb097158e90732
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:35:51 2012 +0100
> 
>     Disabling line numbers in code listings on homepage
> 
> Rakefile
> 
> commit a47a5c49e35f9ccb220dca7b5b8ac7d585026ef6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:25:01 2012 +0100
> 
>     Updated copyright notice updating code
> 
> Rakefile
> 
> commit 21ce307a6766d131bf3a61de1142d88b0bd0a8be
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:24:22 2012 +0100
> 
>     Updated copyright notices
> 
> bin/kramdown
> lib/kramdown.rb
> lib/kramdown/compatibility.rb
> lib/kramdown/converter.rb
> lib/kramdown/converter/base.rb
> lib/kramdown/converter/html.rb
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/converter/latex.rb
> lib/kramdown/converter/toc.rb
> lib/kramdown/document.rb
> lib/kramdown/element.rb
> lib/kramdown/error.rb
> lib/kramdown/options.rb
> lib/kramdown/parser.rb
> lib/kramdown/parser/base.rb
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown.rb
> lib/kramdown/parser/kramdown/abbreviation.rb
> lib/kramdown/parser/kramdown/autolink.rb
> lib/kramdown/parser/kramdown/blank_line.rb
> lib/kramdown/parser/kramdown/block_boundary.rb
> lib/kramdown/parser/kramdown/blockquote.rb
> lib/kramdown/parser/kramdown/codeblock.rb
> lib/kramdown/parser/kramdown/codespan.rb
> lib/kramdown/parser/kramdown/emphasis.rb
> lib/kramdown/parser/kramdown/eob.rb
> lib/kramdown/parser/kramdown/escaped_chars.rb
> lib/kramdown/parser/kramdown/extensions.rb
> lib/kramdown/parser/kramdown/footnote.rb
> lib/kramdown/parser/kramdown/header.rb
> lib/kramdown/parser/kramdown/horizontal_rule.rb
> lib/kramdown/parser/kramdown/html.rb
> lib/kramdown/parser/kramdown/html_entity.rb
> lib/kramdown/parser/kramdown/line_break.rb
> lib/kramdown/parser/kramdown/link.rb
> lib/kramdown/parser/kramdown/list.rb
> lib/kramdown/parser/kramdown/math.rb
> lib/kramdown/parser/kramdown/paragraph.rb
> lib/kramdown/parser/kramdown/smart_quotes.rb
> lib/kramdown/parser/kramdown/table.rb
> lib/kramdown/parser/kramdown/typographic_symbol.rb
> lib/kramdown/parser/markdown.rb
> lib/kramdown/utils.rb
> lib/kramdown/utils/entities.rb
> lib/kramdown/utils/html.rb
> lib/kramdown/utils/ordered_hash.rb
> lib/kramdown/version.rb
> test/run_tests.rb
> test/test_files.rb
> 
> commit 512b00a6d050f506c43b824861f7bbf459862a19
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Feb 19 09:12:38 2012 +0100
> 
>     Fixed bug RF#29521: HTML math output not always XHTML compatible
>     
>     The characters < and & are not allowed in a script tag in XHTML.
>     So since the HTML converter uses script tags for math elements,
>     whenever these characters appear in a value the value is wrapped
>     in a CDATA section to make the output XHTML compatible.
> 
> lib/kramdown/converter/html.rb
> lib/kramdown/parser/html.rb
> test/testcases/block/15_math/normal.html
> 
> commit 8f111947dbcea064a997662d65cd53e6e39c8c40
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Feb 18 20:06:42 2012 +0100
> 
>     Fixed bug RF#29520: inline math statements interpreted as math blocks
>     
>     If a paragraph started and ended with an inline math statement, it was
>     parsed as math block. This is fixed now.
>     
>     Also, it is now better explained in the kramdown syntax documentation
>     how special cases are handled.
> 
> doc/syntax.page
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/parser/kramdown/math.rb
> test/testcases/span/math/normal.html
> test/testcases/span/math/normal.text
> 
> commit f5b585513508704563cc0bb343869f91520ff853
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Feb 18 11:11:45 2012 +0100
> 
>     Fixed problem with missing methods/constants on older Ruby 1.8.6 versions
> 
> lib/kramdown/compatibility.rb
> 
> commit 394d5de7cad34ed5e0bdcfc0fcc7a1a28b3f0229
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Jan 31 17:32:09 2012 +0100
> 
>     Moved camelize method from Document#method_to_class_name to Utils.camelize
> 
> lib/kramdown/document.rb
> lib/kramdown/utils.rb
> 
> commit 7adc3bda20a8290f0af588da7816eec591d4ecaa
> Author: tomykaira <tomykaira@gmail.com>
> Date:   Fri Dec 30 18:08:43 2011 +0900
> 
>     Fix Document#method_missing to accept snake_cased class name
>     
>     When doc.to_my_converter is called, it should use MyConverter, but used My_converter
> 
> lib/kramdown/document.rb
> 
> commit a6b181a9baf2eeeabeb55a1a9d5b26791fecad08
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Jan 21 12:18:22 2012 +0100
> 
>     HTML attributes names are now converted to lower case
> 
> doc/syntax.page
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown/html.rb
> test/testcases/block/09_html/html5_attributes.html
> test/testcases/block/09_html/simple.text
> test/testcases/span/05_html/normal.text
> 
> commit 170ca36a60d823803f575bf5632d9e9d1e74f7db
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Jan 21 12:05:31 2012 +0100
> 
>     HTML attributes without values are now supported
>     
>     This means that one can write boolean HTML attributes now without
>     assigning an empty value.
> 
> doc/syntax.page
> lib/kramdown/converter/kramdown.rb
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown/html.rb
> test/testcases/block/09_html/html5_attributes.html
> test/testcases/block/09_html/html5_attributes.text
> test/testcases/span/05_html/normal.html
> test/testcases/span/05_html/normal.text
> 
> commit 2c1d7c5e66bfe42052dc43374e123a48e7cb2ad6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Fri Dec 16 18:40:15 2011 +0100
> 
>     Fix to work with newer RDoc versions
> 
> Rakefile
> 
> commit 2a93cbc0e1bbe705159c645ae617538bad125394
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Fri Dec 16 18:26:32 2011 +0100
> 
>     Updated release notes, version number and benchmark graphs
> 
> doc/img/graph-jruby-1.6.0-330.png
> doc/img/graph-ruby-1.8.5-231.png
> doc/img/graph-ruby-1.8.6-399.png
> doc/img/graph-ruby-1.8.7-249.png
> doc/img/graph-ruby-1.8.7-302.png
> doc/img/graph-ruby-1.9.2p136-136.png
> doc/img/graph-ruby-1.9.3p0-0.png
> doc/index.page
> doc/news/release_0_13_4.page
> doc/news/release_0_X_X.page
> doc/tests.page
> lib/kramdown/version.rb
> 
> commit dbbabbc5b61b67ed0d22c1aa4a6b17608ed771e6
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Dec 13 17:25:53 2011 +0100
> 
>     Fixed test case to work with coderay 1.0
> 
> test/testcases/block/12_extension/options3.html
> 
> commit 6828b83435c30676185d675dc7b6054846606df0
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Dec 13 17:25:31 2011 +0100
> 
>     Updated Rakefile and setup.rb
>     
>     * Use gem package task supplied by rubygems
>     * Add coderay as development dependency
>     * Fix warning in setup.rb because of Config::CONFIG use
> 
> Rakefile
> setup.rb
> 
> commit bb7e82ce3f5213830fa6387e6c790a75b919dd38
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue Dec 13 17:23:51 2011 +0100
> 
>     Fixed problem with different Array#delete_if internals on Ruby 1.9.3
>     
>     See http://redmine.ruby-lang.org/issues/5752
> 
> lib/kramdown/parser/html.rb
> 
> commit cd253a5e9d4dcfe55c12caf9257e4f1fb6113943
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 15:40:35 2011 +0100
> 
>     Fixed warnings on Ruby 1.9.3
> 
> lib/kramdown/converter/html.rb
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown.rb
> lib/kramdown/parser/kramdown/header.rb
> lib/kramdown/parser/kramdown/html.rb
> lib/kramdown/parser/kramdown/smart_quotes.rb
> test/test_files.rb
> 
> commit e71cc414755e51c3336551e3f011f2f39ea601ee
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 15:32:52 2011 +0100
> 
>     Fixed test cases to correctly behave with new footnote rel output
> 
> test/testcases/block/12_extension/options.html
> test/testcases/block/12_extension/options2.html
> test/testcases/block/14_table/table_with_footnote.html
> 
> commit b3b2ebc233160f4f649f0d0aed070d7540781c4f
> Merge: a58ba5b ef70112
> Author: gettalong <t_leitner@gmx.at>
> Date:   Sun Dec 11 06:26:18 2011 -0800
> 
>     Merge pull request #4 from joefiorini/master
>     
>     HTML5 Compatibility for Footnotes
>     
>     Replacing the rev='footnote' with rel='reference'.
> 
> commit a58ba5b364081e896e2a49cc06db5aec643f8bb4
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 12:38:37 2011 +0100
> 
>     Fixed bug RF#29426: Content of <style> tags is treated as raw text now
> 
> lib/kramdown/parser/html.rb
> test/testcases/block/09_html/parse_as_raw.html
> test/testcases/block/09_html/parse_as_raw.htmlinput
> test/testcases/block/09_html/parse_as_raw.text
> 
> commit 14800a606565ff7d1759fea9815be1f9eff9b633
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sun Dec 11 12:27:52 2011 +0100
> 
>     Fixed bug RF#29350: Parsing of HTML tags with mismatched case now works
> 
> lib/kramdown/parser/html.rb
> lib/kramdown/parser/kramdown/html.rb
> test/test_files.rb
> test/testcases/block/09_html/parse_as_raw.htmlinput
> test/testcases/block/09_html/parse_as_raw.text
> test/testcases/block/09_html/parse_as_span.htmlinput
> test/testcases/block/09_html/parse_as_span.text
> test/testcases/block/09_html/parse_block_html.text
> test/testcases/span/05_html/normal.html
> test/testcases/span/05_html/normal.text
> 
> commit b585efb3086c3462a573b57d060dfd203070bcc1
> Merge: 64a4e7e 3a72b72
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Sat Sep 24 14:41:34 2011 +0200
> 
>     Merge branch 'master' of github.com:gettalong/kramdown
> 
> commit 3a72b72564d4f788fa1423dd8eb1089e355b0a4c
> Merge: e6c1b12 df5e705
> Author: gettalong <t_leitner@gmx.at>
> Date:   Sat Sep 24 05:28:10 2011 -0700
> 
>     Merge pull request #5 from jacius/span
>     
>     span tags must have a separate closing tag to be valid HTML.
> 
> commit e6c1b12fa45c7b3284c4b41247ade9ff4b4379a4
> Merge: 9188906 1270445
> Author: gettalong <t_leitner@gmx.at>
> Date:   Sat Sep 24 05:24:32 2011 -0700
> 
>     Merge pull request #6 from postmodern/patch-1
>     
>     Fixed a typo. --output not --ouput
> 
> commit 12704459192bdcbf9b02d1d90483c8d835f3e9f1
> Author: Postmodern <postmodern.mod3@gmail.com>
> Date:   Thu Aug 4 18:57:59 2011 -0700
> 
>     Fixed a typo. --output not --ouput
> 
> bin/kramdown
> 
> commit df5e705ef41ca2c47b5b0d54509cdfb80c2d5f4d
> Author: John Croisant <jacius@gmail.com>
> Date:   Sun Jul 10 23:52:35 2011 -0500
> 
>     span tags must have a separate closing tag to be valid HTML.
>     
>     "<span />" is invalid markup in HTML 4 and 5, but valid in XHTML.
>     "<span></span>" is valid in all three, so it should be used instead.
> 
> lib/kramdown/converter/html.rb
> test/testcases/span/05_html/normal.html
> test/testcases/span/05_html/normal.text
> 
> commit ef7011229e7d93c31c22468e5cfd797051ac280c
> Author: Joe Fiorini <joe@faithfulgeek.org>
> Date:   Wed May 11 02:08:38 2011 -0400
> 
>     Replace rev attribute for HTML5 compatibility
> 
> lib/kramdown/converter/html.rb
> test/testcases/span/04_footnote/footnote_nr.html
> test/testcases/span/04_footnote/markers.html
> 
> commit 64a4e7e61da0d720ffd702fd6c45cefafc568d24
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue May 10 20:47:16 2011 +0200
> 
>     Added a TOC converter
>     
>     The TOC converter can be used to get an element tree containing the
>     table of contents. Since it uses a custom element type the resulting
>     tree cannot be fed directly to any converter.
> 
> doc/news/release_0_X_X.page
> lib/kramdown/converter.rb
> lib/kramdown/converter/toc.rb
> 
> commit 5ed13d24d9375771e3a0bd0d4fbe779d0043563b
> Author: Thomas Leitner <t_leitner@gmx.at>
> Date:   Tue May 10 07:42:23 2011 +0200
> 
>     Extracted Element class into own file and made some small doc fixes
> 
> lib/kramdown/document.rb
> lib/kramdown/element.rb
> 
###### liquid 2.2.2 -> 2.3.0 ######
1c1,16
< 2.2.1 / 2010-08-23
---
> # Liquid Version History
> 
> ## 2.3.0
> 
> * Several speed/memory improvements
> * Numerous bug fixes
> * Added support for MRI 1.9, Rubinius, and JRuby
> * Added support for integer drop parameters
> * Added epoch support to `date` filter
> * New `raw` tag that suppresses parsing
> * Added `else` option to `for` tag
> * New `increment` tag
> * New `split` filter
> 
> 
> ## 2.2.1 / 2010-08-23
5c20,21
< 2.2.0 / 2010-08-22
---
> 
> ## 2.2.0 / 2010-08-22
10c26,27
< 1.9.0 / 2008-03-04
---
> 
> ## 1.9.0 / 2008-03-04
15,17d31
< Before 1.9.0
< 
< * Added If with or / and expressions
19c33
< * Implemented .to_liquid for all objects which can be passed to liquid like Strings Arrays Hashes Numerics and Booleans. To export new objects to liquid just implement .to_liquid on them and return objects which themselves have .to_liquid methods. 
---
> ## Before 1.9.0
20a35,36
> * Added If with or / and expressions
> * Implemented .to_liquid for all objects which can be passed to liquid like Strings Arrays Hashes Numerics and Booleans. To export new objects to liquid just implement .to_liquid on them and return objects which themselves have .to_liquid methods.
22d37
< 
24d38
< 
26d39
< 
28d40
< 
30d41
< 
32d42
< 
34d43
< 
36d44
< 
38,42c46,47
<   
<   {{ 'Typo' | link_to: 'http://typo.leetsoft.com', 'Typo - a modern weblog engine' }}
<   
< 
< * Added Liquid::Drop. A base class which you can use for exporting proxy objects to liquid which can acquire more data when used in liquid. [Tobias Luetke] 
---
>     {{ 'Typo' | link_to: 'http://typo.leetsoft.com', 'Typo - a modern weblog engine' }}
> * Added Liquid::Drop. A base class which you can use for exporting proxy objects to liquid which can acquire more data when used in liquid. [Tobias Luetke]
48c53
<   end   
---
>   end
51,52d55
< 
< 
###### multi_json 1.0.4 -> 1.1.0 ######
Missing changelogs
###### rack 1.3.2 -> 1.4.1 ######
Missing changelogs
###### rake 0.9.2 -> 0.9.2.2 ######
Missing changelogs
###### rb-fsevent 0.4.3.1 -> 0.9.0 ######
Missing changelogs
###### sass 3.1.5 -> 3.1.15 ######
Missing changelogs
###### stringex 1.3.0 -> 1.3.2 ######
Missing changelogs
###### tilt 1.3.2 -> 1.3.3 ######
Missing changelogs

#2


0  

This doesn't exactly answer your question, but it may be helpful to know how Gem version numbers work. According to the specification, the first of the three numbers in a gem version should tell you whether the gem is guaranteed to be backwards compatible.

这并不能完全回答您的问题,但了解Gem版本号的工作原理可能会有所帮助。根据规范,gem版本中的三个数字中的第一个应该告诉您宝石是否保证向后兼容。

For example, if you start your project with some gem version 3.1.0, it should be compatible with any 3.x.x version of the gem. According to the spec, "A category 3 change (incompatible) will increment the major version number and reset the minor and build numbers"

例如,如果您使用某个gem版本3.1.0启动项目,它应该与任何3.x.x版本的gem兼容。根据规范,“类别3更改(不兼容)将增加主要版本号并重置次要和构建数字”

See here for details: http://docs.rubygems.org/read/chapter/7

有关详细信息,请参见此处:http://docs.rubygems.org/read/chapter/7

You might also find this post about freezing gem versions to test out new ones helpful: https://*.com/a/2147227/834512

您可能还会发现这篇关于冻结宝石版本以测试新的有用的帖子:https://*.com/a/2147227/834512

#3


0  

Is the new bundle outdated command suiting your needs?

新捆绑包过时的命令是否适合您的需求?

http://patshaughnessy.net/2011/11/5/besides-being-faster-what-else-is-new-in-bundler-1-1

http://patshaughnessy.net/2011/11/5/besides-being-faster-what-else-is-new-in-bundler-1-1

The most useful and important new command introduced in Bundler 1.1 is bundle outdated, which will identify the outdated gems in your bundle – these are the gems for which there is a newer version available

Bundler 1.1中引入的最有用和最重要的新命令是bundle outdated,它将识别你的bundle中过时的gem - 这些是有更新版本的gem

#4


0  

There is also a nice webservice which is free for public open source projects (github service hook available): http://Gemnasium.com

还有一个很好的Web服务,可以免费用于公共开源项目(可用的github服务钩子):http://Gemnasium.com

It checks which gems are up to date and serves an overview plus email notifications about what has changed between versions (github tag compare diff).

它会检查哪些宝石是最新的,并提供概述以及有关版本之间发生变化的电子邮件通知(github标记比较差异)。