<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>Redmine Blog - The Official Redmine blog - </title>
 
 <updated>2009-11-11T09:04:48-08:00</updated>
 <id>http://redmineblog.com</id>
 <author>
   <name>Eric Davis</name>
   <email>edavis@littlestreamsoftware.com</email>
 </author>

 
 <geo:lat>45.469079</geo:lat><geo:long>-122.856026</geo:long><link rel="self" href="http://feeds.feedburner.com/RedmineBlog" type="application/atom+xml" /><feedburner:emailServiceId>RedmineBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
   <title>Embedding Github's Gist into Redmine</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/BO1vGs16Vvs/embedding-github-gists-into-redmine" />
   <updated>2009-11-11T00:00:00-08:00</updated>
   <id>http://redmineblog.com/articles/embedding-github-gists-into-redmine</id>
   <content type="html">&lt;p&gt;&lt;a href="http://github.com"&gt;Github&lt;/a&gt; provides a service called &lt;a href="http://gist.github.com"&gt;Gist&lt;/a&gt;, where you can share snippets of code or text with others.  What I like about Gist compared to other sites is that you can copy and edit other people's Gists to improve them.  Yasushi Abe wrote a very simple plugin for Redmine that gives Redmine the ability to embed a Gist into the Wiki.  Once it's installed, it's used by calling the &lt;code&gt;gist&lt;/code&gt; macro with the Gist id like &lt;code&gt;gist(113685)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's an example of using it on a wiki page:&lt;/p&gt;

&lt;p&gt;&lt;a href="/assets/2009/11/gist-embedded-in-wiki.png"&gt;&lt;img src="/assets/2009/11/gist-embedded-in-wiki-small.png" alt="Gist embedded in an issue" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And another example of using it on an issue's page:&lt;/p&gt;

&lt;p&gt;&lt;a href="/assets/2009/11/gist-embedded-in-issue.png"&gt;&lt;img src="/assets/2009/11/gist-embedded-in-issue-small.png" alt="Gist embedded in an issue" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the plugin is so short, I'm going to include the entire plugin here.  To install it, just create a directory called &lt;code&gt;vendor/plugins/redmine_gist&lt;/code&gt; and copy this file into it.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c1"&gt;### Also available from http://gist.github.com/113685&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;span class="c1"&gt;# vendor/plugins/redmine_gist/init.rb&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;redmine&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;open-uri&amp;#39;&lt;/span&gt;

&lt;span class="no"&gt;Redmine&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Plugin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;register&lt;/span&gt; &lt;span class="ss"&gt;:redmine_gist&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Redmine Gist embed plugin&amp;#39;&lt;/span&gt;
  &lt;span class="n"&gt;author&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Yasushi Abe &amp;lt;yasushi.abe@gmail.com&amp;gt;&amp;#39;&lt;/span&gt;
  &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;This is a plugin for Redmine&amp;#39;&lt;/span&gt;
  &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.0.1&amp;#39;&lt;/span&gt;

  &lt;span class="no"&gt;Redmine&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;WikiFormatting&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Macros&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;register&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;gist embed&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;macro&lt;/span&gt; &lt;span class="ss"&gt;:gist&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="n"&gt;javascript_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:src&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;http://gist.github.com/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;empty?&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;One thing I did discover is that the &lt;a href="http://gist.github.com"&gt;Gist&lt;/a&gt; system doesn't allow sharing private Gists this way.  So you will have to make sure that any Gist you post is public.&lt;/p&gt;

&lt;p&gt;Let me know in the comments if you're using this plugin and what you are using it for.&lt;/p&gt;

&lt;p&gt;Eric Davis&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=BO1vGs16Vvs:8ziPVLUvtQ4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=BO1vGs16Vvs:8ziPVLUvtQ4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=BO1vGs16Vvs:8ziPVLUvtQ4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=BO1vGs16Vvs:8ziPVLUvtQ4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=BO1vGs16Vvs:8ziPVLUvtQ4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/BO1vGs16Vvs" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/embedding-github-gists-into-redmine</feedburner:origLink></entry>
 
 <entry>
   <title>Redmine 0.8.6 Released</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/H_HQDTvAOW0/redmine-0.8.6-released" />
   <updated>2009-11-05T00:00:00-08:00</updated>
   <id>http://redmineblog.com/articles/redmine-0.8.6-released</id>
   <content type="html">&lt;p&gt;Redmine &lt;a href="http://www.redmine.org/news/29"&gt;0.8.6&lt;/a&gt; was just released yesterday, November 4th.  This is another point release which fixes a few bugs and potential vulnerabilities.  If you're running an older version of Redmine, it's recommended that you upgrade as soon as possible.&lt;/p&gt;

&lt;h3&gt;Command line subversion tweaks&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;I previously reported this fixed in &lt;a href="/articles/redmine-0.8.5-released"&gt;0.8.5&lt;/a&gt; but it wasn't included in that release.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Subversion adapter received a few tweaks in this release.  Now when Redmine is fetching data from the Subversion server, it will run non-interactively and will not cache authentication.  This will prevent problems where &lt;code&gt;svn&lt;/code&gt; hangs while waiting for a response from the user. Issue &lt;a href="http://www.redmine.org/issues/3424"&gt;#3424&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Links to closed issues are distinct from open issue&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;I previously reported this fixed in &lt;a href="/articles/redmine-0.8.5-released"&gt;0.8.5&lt;/a&gt; but it wasn't included in that release.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now when a closed issue is linked to, Redmine will strike-through the text and also color it in a lighter gray.  This makes reading a long list of issues a lot easier.  Issue &lt;a href="http://www.redmine.org/issues/3495"&gt;#3495&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Hide user pages without activity&lt;/h3&gt;

&lt;p&gt;Each user has their own page at /account/show that will list their name, avatar, and any activity they've done in Redmine.  With this release, only users who have any activity will be displayed.  Issue &lt;a href="http://www.redmine.org/issues/3720"&gt;#3720&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Allow images on headers&lt;/h3&gt;

&lt;p&gt;With this version, a wiki formatted header can have an image embedded in like &lt;code&gt;h2. !/attachments/download/2690!&lt;/code&gt;. Issue &lt;a href="http://www.redmine.org/issues/4112"&gt;#4112&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Editing an issue reply would escape special characters&lt;/h3&gt;

&lt;p&gt;If you edited a note on an issue, Redmine would convert special characters like &lt;code&gt;&amp;lt;&lt;/code&gt; or &lt;code&gt;&amp;gt;&lt;/code&gt; into the escaped versions.  This would cause the note to lose any special formatting when it's saved, because it was double escaped.  This should now be fixed. Issue &lt;a href="http://www.redmine.org/issues/3996"&gt;#3996&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Error when displaying a repository when a changeset has no comments&lt;/h3&gt;

&lt;p&gt;It's considered bad form to commit code without a comment but some system allow it.  If one of these commits was displayed by Redmine, it would throw an error page up. Issue &lt;a href="http://www.redmine.org/issues/4126"&gt;#4126&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Errors when a custom value was set to nil&lt;/h3&gt;

&lt;p&gt;This fixed an error on the project and users pages when a custom field had a nil (null) value. Issue &lt;a href="http://www.redmine.org/issues/3705"&gt;#3705&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;New plugin hooks&lt;/h3&gt;

&lt;p&gt;0.8.6 also includes some more plugin hooks for developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:controller_issues_edit_after_save&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_issues_new_after_save&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;To see more details about all of the changes in 0.8.6, check out the &lt;a href="http://www.redmine.org/projects/redmine/changelog#0.8.6"&gt;Changelog&lt;/a&gt; posted to &lt;a href="http://www.redmine.org"&gt;Redmine.org&lt;/a&gt;.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=H_HQDTvAOW0:38Bum7Kl-xA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=H_HQDTvAOW0:38Bum7Kl-xA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=H_HQDTvAOW0:38Bum7Kl-xA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=H_HQDTvAOW0:38Bum7Kl-xA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=H_HQDTvAOW0:38Bum7Kl-xA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/H_HQDTvAOW0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/redmine-0.8.6-released</feedburner:origLink></entry>
 
 <entry>
   <title>Asynchronous Email Delivery</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/o1pkVlWP228/asynchronous-email-delivery" />
   <updated>2009-10-09T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/asynchronous-email-delivery</id>
   <content type="html">&lt;p&gt;I wanted to share a simple performance tweak for Redmine's email notifications that you might not know about&lt;/p&gt;

&lt;h3&gt;Overview&lt;/h3&gt;

&lt;p&gt;Redmine sends email notifications when an event happens, like an issue update.  This happens entirely within the &lt;a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP request/response cycle&lt;/a&gt;; so if your email server is slow, Redmine will also be slow because it's waiting on the server to respond.  The basic steps Redmine takes during an issue update is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User updates issue #100 with a new comment&lt;/li&gt;
&lt;li&gt;Redmine saves the comment to the database&lt;/li&gt;
&lt;li&gt;Redmine connects to the email server to deliver the email notifications&lt;/li&gt;
&lt;li&gt;The email server receives the connection and sends the email&lt;/li&gt;
&lt;li&gt;Redmine redirects the User to the updated issue #100&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;So if the emailing steps (#3 and #4) take a long time, the user would have to wait for the email server to send the email before the user saw the new page.  If we can bypass the email steps, the user would be able to do keep working while the email is processed.&lt;/p&gt;

&lt;p&gt;The standard Rails way for bypassing the email server is to use a &lt;a href="http://nubyonrails.com/articles/about-this-blog-beanstalk-messaging-queue"&gt;message queue&lt;/a&gt; and run a background process to send emails.  There is a specialized Rails plugin that can do this for email, called &lt;a href="http://seattlerb.rubyforge.org/ar_mailer/"&gt;ar_mailer&lt;/a&gt;.  But Redmine comes with another option that is trivial to setup and gives good enough performance.  This option is the &lt;code&gt;:async_smtp&lt;/code&gt; and &lt;code&gt;:async_sendmail&lt;/code&gt; delivery_methods, added in issue &lt;a href="http://www.redmine.org/issues/613"&gt;#613&lt;/a&gt;.  To configure them, all you have to do is to change one option in your &lt;code&gt;config/email.yml&lt;/code&gt; and restart Redmine.&lt;/p&gt;

&lt;h3&gt;SMTP configuration example&lt;/h3&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="l-Scalar-Plain"&gt;production&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Was  &amp;quot;delivery_method: :smtp&amp;quot;&lt;/span&gt;
  &lt;span class="l-Scalar-Plain"&gt;delivery_method&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="l-Scalar-Plain"&gt;:async_smtp&lt;/span&gt;
  &lt;span class="l-Scalar-Plain"&gt;smtp_settings&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt;
    &lt;span class="l-Scalar-Plain"&gt;tls&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="l-Scalar-Plain"&gt;true&lt;/span&gt;
    &lt;span class="l-Scalar-Plain"&gt;address&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;secure.emailsrvr.com&amp;quot;&lt;/span&gt;
    &lt;span class="l-Scalar-Plain"&gt;port&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="l-Scalar-Plain"&gt;587&lt;/span&gt;
    &lt;span class="l-Scalar-Plain"&gt;domain&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;littlestreamsoftware.com&amp;quot;&lt;/span&gt;
    &lt;span class="l-Scalar-Plain"&gt;authentication&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="l-Scalar-Plain"&gt;:plain&lt;/span&gt;
    &lt;span class="l-Scalar-Plain"&gt;user_name&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;projects@littlestreamsoftware.com&amp;#39;&lt;/span&gt;
    &lt;span class="l-Scalar-Plain"&gt;password&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;plugins&amp;#39;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Sendmail configuration example&lt;/h3&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="l-Scalar-Plain"&gt;production&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Was  &amp;quot;delivery_method: :sendmail&amp;quot;&lt;/span&gt;
  &lt;span class="l-Scalar-Plain"&gt;delivery_method&lt;/span&gt;&lt;span class="p-Indicator"&gt;:&lt;/span&gt; &lt;span class="l-Scalar-Plain"&gt;:async_sendmail&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;How it works&lt;/h3&gt;

&lt;p&gt;The code for this is so trivial, I'm going to include it entirely in this post:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c1"&gt;### From config/initializers/10-patches.rb&lt;/span&gt;

&lt;span class="c1"&gt;# Adds :async_smtp and :async_sendmail delivery methods&lt;/span&gt;
&lt;span class="c1"&gt;# to perform email deliveries asynchronously&lt;/span&gt;
&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;AsynchronousMailer&lt;/span&gt;
  &lt;span class="sx"&gt;%w(smtp sendmail)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;define_method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;perform_delivery_async_&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="no"&gt;Thread&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="nb"&gt;send&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;perform_delivery_&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mail&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;      
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;ActionMailer&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt; &lt;span class="ss"&gt;:include&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;AsynchronousMailer&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;The guts of this code is in the &lt;code&gt;Thread.start&lt;/code&gt; method call.  That will start a new Ruby thread to connect to the email server and perform the actual email delivery.  The original thread can continue on it's merry way and return the HTML response back to the user.  So the flow above would let steps 3 and 4 happen in parallel to step 5.  This might not be a large performance improvement, due to how Ruby threads work, but it's an easy thing to setup and could shave seconds off of your response time.&lt;/p&gt;

&lt;p&gt;If your looking for an easy performance tweak, or you've noticed that your email server is responding slowly this would be worth the 10 minutes to test out.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Technical note: This is a grossly simplified version of Ruby thread performance.  There are a lot of factors that will determine how much faster (if at all) this will make Redmine, including if either thread becomes blocked while waiting on IO (e.g. network IO to the web server, network IO to the email server).  At the very worst case, the performance will be almost as good as sending mail synchronously.&lt;/em&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=o1pkVlWP228:5BmINs4KsP8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=o1pkVlWP228:5BmINs4KsP8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=o1pkVlWP228:5BmINs4KsP8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=o1pkVlWP228:5BmINs4KsP8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=o1pkVlWP228:5BmINs4KsP8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/o1pkVlWP228" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/asynchronous-email-delivery</feedburner:origLink></entry>
 
 <entry>
   <title>Rails 2.3.4 Support</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/35A6oIwDIww/rails-2.3.4-support" />
   <updated>2009-09-23T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/rails-2.3.4-support</id>
   <content type="html">&lt;p&gt;Recently &lt;a href="http://www.redmine.org/news/28"&gt;Redmine was upgraded&lt;/a&gt; to run on the latest version of Ruby on Rails, 2.3.4.  Redmine has been running on older versions of Ruby on Rails, 2.2.2 in trunk and 2.1.2 in 0.8.x.  This upgrade will also allow us to take advantage of new Ruby on Rails APIs and third party code.  I was able to fix the major bugs during the upgrade but like any other major change, there will be a few small bugs that appear over the next few weeks.&lt;/p&gt;

&lt;p&gt;If you are able to run Redmine in a test environment, please upgrade to the latest trunk and let us know about any bugs or odd behavior you find.  If you can troubleshoot the bug and are able to provide a patch, that would be awesome.&lt;/p&gt;

&lt;p&gt;With this upgrade complete, I'm going to focus my energy into building the &lt;a href="http://www.redmine.org/issues/296"&gt;REST API&lt;/a&gt; for Redmine.  I'm hoping to build out the authentication part first so plugin developers will be able to add their own APIs.  If you have an idea of what you'd like to use a Redmine API for, please comment on the &lt;a href="http://www.redmine.org/boards/1/topics/8746"&gt;API ideas&lt;/a&gt; forum thread I've posted.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=35A6oIwDIww:JB4bOpsg85Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=35A6oIwDIww:JB4bOpsg85Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=35A6oIwDIww:JB4bOpsg85Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=35A6oIwDIww:JB4bOpsg85Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=35A6oIwDIww:JB4bOpsg85Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/35A6oIwDIww" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/rails-2.3.4-support</feedburner:origLink></entry>
 
 <entry>
   <title>Redmine 0.8.5 Released</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/3Lz1MR9ZBoY/redmine-0.8.5-released" />
   <updated>2009-09-14T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/redmine-0.8.5-released</id>
   <content type="html">&lt;p&gt;Redmine &lt;a href="http://www.redmine.org/news/27"&gt;0.8.5&lt;/a&gt; was released on September 13th, 2009.  This release is a point release which includes some security fixes found in Ruby on Rails 2.1.2 and some bug fixes in Redmine.  If you're running an older version of the Redmine 0.8.x series, it's recommended that you upgrade as soon as possible.  Once you've upgraded, you might notice that the version is still called &lt;a href="http://www.redmine.org/projects/redmine/repository/entry/tags/0.8.5/lib/redmine/version.rb"&gt;0.8.4&lt;/a&gt;.  That's a mistake, we forgot to increment the version number when it was tagged.&lt;/p&gt;

&lt;h3&gt;Security fixes&lt;/h3&gt;

&lt;p&gt;The Ruby on Rails core team announced two security vulnerabilities in Rails on September 3rd.  These were a &lt;a href="http://en.wikipedia.org/wiki/Cross-site_scripting"&gt;XSS&lt;/a&gt; Vulnerability and a Timing Weakness when using the cookie session store.  Redmine 0.8.5 includes the patched versions of Rails in the official download.  If you are running the Subversion version, it's strongly recommended that you patch your Ruby on Rails installation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/rubyonrails-security/browse_frm/thread/48ab3f4a2c16190f"&gt;XSS Vulnerability in Ruby on Rails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/rubyonrails-security/browse_frm/thread/da57f883530352ee"&gt;Timing Weakness in ActiveSupport::MessageVerifier and the Cookie Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Show plugins on script/about&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;script/about&lt;/code&gt; is used to print information about the current Redmine environment, such as the versions of Rails and the database.  0.8.5 has enhanced &lt;code&gt;script/about&lt;/code&gt; to list the currently installed Redmine plugins and their versions.  This should make it easier to get help on specific plugin versions.&lt;/p&gt;

&lt;p&gt;For example:
&lt;pre&gt;
About your application's environment
Ruby version              1.8.6 (i486-linux)
RubyGems version          1.3.1
Rails version             2.2.2
Active Record version     2.2.2
Action Pack version       2.2.2
Active Resource version   2.2.2
Action Mailer version     2.2.2
Active Support version    2.2.2
Application root          /home/edavis/dev/redmine/redmine-core
Environment               development
Database adapter          mysql
Database schema version   20090518163007&lt;/p&gt;

&lt;p&gt;About your Redmine plugins
Redmine Hoptoad Server plugin          0.0.1
Redmine Exception Handler plugin       0.2.0
Little Stream Software Design plugin   0.1.0
Redmine Graphs plugin                  0.1.0
Redmine Schedules plugin               0.4.1
Redmine My Widgets plugin              0.1.0
Rate Plugin                            0.1.0
Download Counter                       0.1.0
&lt;/pre&gt;&lt;/p&gt;

&lt;h3&gt;Command line subversion tweaks&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Update: I forget to merge this feature into 0.8.5 so it's not part of this release.  It will be in 0.8.6.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Subversion adapter received a few tweaks in this release.  Now when Redmine is fetching data from the Subversion server, it will run non-interactively and will not cache authentication.  This will prevent problems where &lt;code&gt;svn&lt;/code&gt; hangs while waiting for a response from the user.&lt;/p&gt;

&lt;h3&gt;Links to closed issues are distinct from open issue&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Update: I forget to merge this feature into 0.8.5 so it's not part of this release.  It will be in 0.8.6.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now when a closed issue is linked to, Redmine will strike-through the text and also color it in a lighter gray.  This makes reading a long list of issues a lot easier.  See &lt;a href="http://www.redmine.org/issues/3495"&gt;issue #3495&lt;/a&gt; for a before and after screenshot.&lt;/p&gt;

&lt;h3&gt;Mail Handler tweak&lt;/h3&gt;

&lt;p&gt;When using an incoming mail handler with Redmine, keywords can now have a space before the colon.  Some mail clients will insert a space before the colon so Redmine wouldn't recognize the keyword.  If you'd had a problem with your email keywords not getting recognized, it should be fixed in 0.8.5.&lt;/p&gt;

&lt;h3&gt;New plugin hooks&lt;/h3&gt;

&lt;p&gt;If you are a plugin developer, 0.8.5 includes a few new plugin hooks that can be used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:controller_messages_new_after_save&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_messages_reply_after_save&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_timelog_edit_before_save&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_wiki_edit_after_save&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:model_changeset_scan_commit_for_issue_ids_pre_issue_update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:view_account_left_bottom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:view_account_right_bottom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:view_versions_show_contextual hook&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;To see all of the changes in 0.8.5, check out the &lt;a href="http://www.redmine.org/projects/redmine/changelog#0.8.5"&gt;Changelog&lt;/a&gt; posted to &lt;a href="http://www.redmine.org"&gt;Redmine.org&lt;/a&gt;.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=3Lz1MR9ZBoY:XSxM0esRDtY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=3Lz1MR9ZBoY:XSxM0esRDtY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=3Lz1MR9ZBoY:XSxM0esRDtY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=3Lz1MR9ZBoY:XSxM0esRDtY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=3Lz1MR9ZBoY:XSxM0esRDtY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/3Lz1MR9ZBoY" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/redmine-0.8.5-released</feedburner:origLink></entry>
 
 <entry>
   <title>RedmineBlog.com now powered by Jekyll</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/0DzYVPnoiwE/redmineblog.com-now-powered-by-jekyll" />
   <updated>2009-09-04T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/redmineblog.com-now-powered-by-jekyll</id>
   <content type="html">&lt;p&gt;Last night I migrated &lt;a href="http://RedmineBlog.com"&gt;RedmineBlog.com&lt;/a&gt; to the &lt;a href="http://github.com/mojombo/jekyll/tree/master"&gt;Jekyll&lt;/a&gt; engine.  The blog has been running on &lt;a href="http://mephistoblog.com/"&gt;Mephisto&lt;/a&gt; but I was finding it difficult to actually write due to the various the bugs in Mephisto.  Jekyll will make this easier, so I'm hoping to post more frequently.  I converted all of the comments to &lt;a href="http://disqus.com/"&gt;Disqus&lt;/a&gt;, so the previous conversations are still available.  Disqus is a hosted commenting service which has a lot more features than the built in ones in the old blog.  I'm hoping this will make this site more valuable to each of you.&lt;/p&gt;

&lt;p&gt;I'm still tweaking the blog a little bit and will be fixing the smaller bugs as I find them.  If you notice anything, please post a comment here or open a &lt;a href="https://projects.littlestreamsoftware.com/projects/redmine-blog/issues"&gt;bug report&lt;/a&gt; for me.  Thanks&lt;/p&gt;

&lt;p&gt;Eric Davis&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=0DzYVPnoiwE:ZZ7aRIlVZKE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=0DzYVPnoiwE:ZZ7aRIlVZKE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=0DzYVPnoiwE:ZZ7aRIlVZKE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=0DzYVPnoiwE:ZZ7aRIlVZKE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=0DzYVPnoiwE:ZZ7aRIlVZKE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/0DzYVPnoiwE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/redmineblog.com-now-powered-by-jekyll</feedburner:origLink></entry>
 
 <entry>
   <title>Community Update #3</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/GBjzdShDmwk/community-update-3" />
   <updated>2009-07-17T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/community-update-3</id>
   <content type="html">&lt;p&gt;It's time for another update on what's been happening in the Redmine community.  This installment covers from May 18th through July 12th.&lt;/p&gt;

&lt;h2&gt;Code Changes&lt;/h2&gt;

&lt;h3&gt;Anonymous issue creation via email&lt;/h3&gt;

&lt;p&gt;Redmine's mail handler is a very powerful component, allowing users to send email to create new issues or update existing ones.  &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2789"&gt;r2789&lt;/a&gt; added some additional options, including the ability to accept email from unknown users and automatically create accounts for them.  This makes it easy to publish an email address for anyone to send new requests directly to Redmine.&lt;/p&gt;

&lt;h3&gt;Enhancement to about script&lt;/h3&gt;

&lt;p&gt;The about script, commonly called &lt;code&gt;script/about&lt;/code&gt;, is used to let someone know what version of Redmine and Ruby on Rails you are running.  &lt;a href="http://www.redmine.org/issues/3387"&gt;#3387&lt;/a&gt; enhanced the script to also include information about the installed Redmine plugins and their version.  I know this will help me support my plugins by understanding what versions people encounter bugs on.&lt;/p&gt;

&lt;h3&gt;Administration panel breadcrumbs&lt;/h3&gt;

&lt;p&gt;A few sections of the Administration panel now has breadcrumb links to help navigate up a level.  Personally, I'd like to redo the entire navigation of the Administration panel, but that will have to wait. &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2810"&gt;r2810&lt;/a&gt; added breadcrumbs for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom Fields&lt;/li&gt;
&lt;li&gt;Enumerations&lt;/li&gt;
&lt;li&gt;Issue statuses&lt;/li&gt;
&lt;li&gt;Roles&lt;/li&gt;
&lt;li&gt;Trackers&lt;/li&gt;
&lt;li&gt;Users&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Fix for Bazaar merge tags&lt;/h3&gt;

&lt;p&gt;When branches are merged in Bazaar, a merge commit is performed.  Redmine wasn't able to parse these merge commits which causing some commits to be missing from Redmine's database.  Scott Aubrey supplied a patch for parsing the merge commits correctly, which was committed in &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2780"&gt;r2780&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Enumerations storage change&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2777"&gt;r2777&lt;/a&gt; included a major internal change to how Enumerations are stored.  Enumerations include time entry activities, document categories, and issue priorities.  To the user or administrator of Redmine, this change has no real impact.  But plugin developers can take advantage of this change by being able to define their own custom Enumerations.  If you are a plugin developer and need to store data that is similar to the existing Enumerations, I'd recommend you try to take advantage of this change.&lt;/p&gt;

&lt;h3&gt;Plugin hooks&lt;/h3&gt;

&lt;p&gt;A few plugin hooks were added for plugin developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:view_versions_show_contextual&lt;/code&gt; - &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2771"&gt;r2771&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:view_account_left_bottom&lt;/code&gt; - &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2772"&gt;r2772&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:view_account_right_bottom&lt;/code&gt; - &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2772"&gt;r2772&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:model_changeset_scan_commit_for_issue_ids_pre_issue_update&lt;/code&gt; - &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2773"&gt;r2773&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_messages_new_after_save&lt;/code&gt; - &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2774"&gt;r2774&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_messages_reply_after_save&lt;/code&gt; - &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2774"&gt;r2774&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_wiki_edit_after_save&lt;/code&gt; - &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2774"&gt;r2774&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:controller_timelog_edit_before_save&lt;/code&gt; &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2775"&gt;r2775&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;User Groups under development&lt;/h3&gt;

&lt;p&gt;I also noticed that Jean-Philippe Lang has started development on user groups in a separate &lt;code&gt;groups&lt;/code&gt; branch.  User groups is one of the major features scheduled for 0.9 and I know several organizations that are looking forward to this feature, especially the time savings it'll have.  There's no time estimate when this will hit trunk but I suspect it will be over the next few weeks.&lt;/p&gt;

&lt;h2&gt;Community Events&lt;/h2&gt;

&lt;p&gt;There was a huge number of plugins developed over the past months.  I'm so happy that the community is really innovating with plugins.&lt;/p&gt;

&lt;h3&gt;Campfire notification plugin&lt;/h3&gt;

&lt;p&gt;Edouard Brière created a &lt;a href="http://www.redmine.org/boards/3/topics/6215"&gt;Redmine plugin&lt;/a&gt; that will send issue notifications to a &lt;a href="http://campfirenow.com/"&gt;Campfire&lt;/a&gt; room.  This would be useful to get real time notification of Redmine updates into your company chatroom.  I wonder if someone will create one of these for IRC.&lt;/p&gt;

&lt;h3&gt;Code review plugin - 0.1.8.6&lt;/h3&gt;

&lt;p&gt;Haru Iida has released a new version of the &lt;a href="http://www.redmine.org/boards/3/topics/5878"&gt;Code Review&lt;/a&gt; plugin.  This is a minor release that includes some bug fixes from the last release.&lt;/p&gt;

&lt;h3&gt;Developer Rates plugin&lt;/h3&gt;

&lt;p&gt;Shaun Gilroy has released a plugin called &lt;a href="http://www.redmine.org/boards/3/topics/6449"&gt;Developer Rates&lt;/a&gt;.  From what I've heard, this plugin will let you attach an hourly rate to each time entry in Redmine.  It's worth a look if you want to track any hourly costs in Redmine.&lt;/p&gt;

&lt;h3&gt;HoptoadServer plugin&lt;/h3&gt;

&lt;p&gt;Jan Schulz-Hofen has released the &lt;a href="http://www.redmine.org/boards/3/topics/7231"&gt;HoptoadServer&lt;/a&gt; plugin.  &lt;a href="http://hoptoadapp.com/"&gt;Hoptoad&lt;/a&gt; is a service that will collect and manage errors from a Ruby on Rails application.  The service provides a free plugin that you use to report to the Hoptoad servers.  The HoptoadServer plugin allows Redmine to act as a Hoptoad server, replacing the need for the &lt;a href="http://hoptoadapp.com/"&gt;Hoptoad&lt;/a&gt; service.  I'm already using this plugin with a few applications I'm hosting and I've been very happy getting all the errors sent directly to Redmine.&lt;/p&gt;

&lt;h3&gt;Hudson plugin&lt;/h3&gt;

&lt;p&gt;Toshiyuki Ando has released a plugin to integrate the &lt;a href="http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson"&gt;Hudson continuous integration system&lt;/a&gt; into Redmine.  The &lt;a href="http://www.redmine.org/boards/3/topics/6650"&gt;Hudson plugin&lt;/a&gt; has been under active development, with several releases in the past month.  I don't run Hudson, but the integration this plugin provides is making me consider a switch to Hudson.&lt;/p&gt;

&lt;h3&gt;Issue import script&lt;/h3&gt;

&lt;p&gt;Joe Chin Hi Rene posted an example script that can be used to &lt;a href="http://www.redmine.org/boards/2/topics/7073"&gt;import issues&lt;/a&gt; from a CSV file into Redmine.  If you're looking for a quick way to get a bunch of issues created, this script might be a good starting point.&lt;/p&gt;

&lt;h3&gt;Laconi.ca plugin&lt;/h3&gt;

&lt;p&gt;Ciaran Jessup has released a &lt;a href="http://www.redmine.org/boards/3/topics/7117"&gt;Laconi.ca plugin&lt;/a&gt; for Redmine that will integrate Redmine notifications into Laconi.ca, Twitter, or Identi.ca.  Once configured, this plugin will send notifications to the service making it easier to other people to follow what's happening in Redmine.  This continues the recent trend of having Redmine send it's notifications out to external services.&lt;/p&gt;

&lt;h3&gt;Squeejee theme - 0.2.0&lt;/h3&gt;

&lt;p&gt;Mischa The Evil has uploaded a new version of the &lt;a href="http://www.redmine.org/boards/3/topics/6343"&gt;Squeejee theme&lt;/a&gt; for Redmine.  This is a darker theme than the default Redmine theme and includes a wide variety of graphics.  Mischa has done a terrific job of documenting which versions of Redmine, browsers, and plugins are compatible with it.  If you're looking for a high quality theme with great support, I'd recommend trying anything Mischa packages.&lt;/p&gt;

&lt;h3&gt;Redmine Collapse plugin - 0.2.2&lt;/h3&gt;

&lt;p&gt;Mischa The Evil also released a few updates to his &lt;a href="http://www.redmine.org/boards/3/topics/6737"&gt;Redmine Collapse&lt;/a&gt; plugin.  This plugin modifies the default layout of Redmine so the entire sidebar can be hidden away from view.  This is useful if you work with a lot of data or need more monitor space.  Once again, Mischa has some great documentation on it's compatibility on the &lt;a href="http://www.redmine.org/wiki/redmine/PluginCollapse"&gt;plugin page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Watersky theme&lt;/h3&gt;

&lt;p&gt;Konstantin Zaitsev has posted a new theme for Redmine, titled &lt;a href="http://www.redmine.org/boards/1/topics/6716"&gt;watersky&lt;/a&gt;.  This is a nice blue theme for Redmine, using images instead of text links on the menus.&lt;/p&gt;

&lt;h3&gt;Wiki Extensions plugin&lt;/h3&gt;

&lt;p&gt;Haru Iida released another plugin which adds a few new wiki macros to Redmine, titled &lt;a href="http://www.redmine.org/boards/3/topics/7130"&gt;Wiki Extensions&lt;/a&gt;.  If you're using the wiki in Redmine a lot, you will want to take a look at the demo page he put up to see if there's anything you could use.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;If you hear about something in the Redmine community that you think is useful, please &lt;a href="https://projects.littlestreamsoftware.com/projects/redmine-blog/issues/new"&gt;let me know&lt;/a&gt; about it and I'll try to spread the word.&lt;/p&gt;

&lt;p&gt;Eric&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=GBjzdShDmwk:kbXKNlrXl7M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=GBjzdShDmwk:kbXKNlrXl7M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=GBjzdShDmwk:kbXKNlrXl7M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=GBjzdShDmwk:kbXKNlrXl7M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=GBjzdShDmwk:kbXKNlrXl7M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/GBjzdShDmwk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/community-update-3</feedburner:origLink></entry>
 
 <entry>
   <title>Redmine Demo - now available at demo.redmine.org</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/WUXdNB1N8O0/redmine-demo-now-available-at-demo-redmine-org" />
   <updated>2009-06-15T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/redmine-demo-now-available-at-demo-redmine-org</id>
   <content type="html">&lt;p&gt;If you were wanting to evaluate Redmine without having to set it up or wanted to try out some of the new features coming in 0.9, the &lt;a href="http://demo.redmine.org"&gt;Redmine demo&lt;/a&gt; is now back online.  I've set it up on &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt; using their free plan and a &lt;a href="http://www.postgresql.org"&gt;PostgreSQL&lt;/a&gt; database.  This demo is different from the old one in two critical ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;it's running a newer version of the Redmine trunk (r2784) so you can evaluate the new features that have been added recently&lt;/li&gt;
&lt;li&gt;it's been setup to give registered users the ability to create their own projects.  This means once you register, you can create your own project on there and try out the project administration features&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;So if setting up Redmine has held you back from evaluating Redmine, fear no longer as the demo server is waiting for you.  If you do decide to start using Redmine and would like some help setting it up, &lt;a href="http://www.littlestreamsoftware.com/contact.html"&gt;send me an email&lt;/a&gt; and I'll see what I can do to help.&lt;/p&gt;

&lt;p&gt;Eric&lt;/p&gt;

&lt;p&gt;&lt;img src="http://redmineblog.com/assets/2009/6/15/redmine_demo_mid.png" alt="Redmine Demo at http://demo.redmine.org" /&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=WUXdNB1N8O0:V_juh8HL6-Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=WUXdNB1N8O0:V_juh8HL6-Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=WUXdNB1N8O0:V_juh8HL6-Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=WUXdNB1N8O0:V_juh8HL6-Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=WUXdNB1N8O0:V_juh8HL6-Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/WUXdNB1N8O0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/redmine-demo-now-available-at-demo-redmine-org</feedburner:origLink></entry>
 
 <entry>
   <title>Redmine Hosting - SourceRepo.com</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/nEfor5C02I4/redmine-hosting-sourcerepo-com" />
   <updated>2009-06-04T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/redmine-hosting-sourcerepo-com</id>
   <content type="html">&lt;p&gt;&lt;a href="http://sourcerepo.com"&gt;
  &lt;img src="http://redmineblog.com/assets/2009/6/4/source_repo.png" alt="Source Repo" title="Source Repo" /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently had to opportunity to work with Joe Clarke of &lt;a href="http://sourcerepo.com"&gt;SourceRepo.com&lt;/a&gt; to add &lt;a href="http://www.redmine.org"&gt;Redmine&lt;/a&gt; to their service.  &lt;a href="http://sourcerepo.com"&gt;SourceRepo.com&lt;/a&gt; provides source code repository hosting for Git, SVN, and Mercurial.  Now, depending on the plan you choose, you will have access to a full Redmine 0.8 install.  SourceRepo.com also has an exclusive feature for Redmine right now.  It will be released to the general community soon but if you want to try it out, you will need to sign up for an account.  I'll give you a hint, it has to do with "themes" and "uploading".&lt;/p&gt;

&lt;p&gt;I'm happy to have another company support &lt;a href="http://www.redmine.org"&gt;Redmine&lt;/a&gt; and provide an easy way for users to get Redmine up and running.  If you are looking for a place to host your Redmine, give &lt;a href="http://sourcerepo.com"&gt;SourceRepo.com&lt;/a&gt; a try and let them know you heard about them from here.&lt;/p&gt;

&lt;p&gt;Eric&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=nEfor5C02I4:Mzy2GKJkLHg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=nEfor5C02I4:Mzy2GKJkLHg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=nEfor5C02I4:Mzy2GKJkLHg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=nEfor5C02I4:Mzy2GKJkLHg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=nEfor5C02I4:Mzy2GKJkLHg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/nEfor5C02I4" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/redmine-hosting-sourcerepo-com</feedburner:origLink></entry>
 
 <entry>
   <title>Community Update #2</title>
   <link href="http://feedproxy.google.com/~r/RedmineBlog/~3/hVzEm4p1dVE/community-update-2" />
   <updated>2009-05-19T00:00:00-07:00</updated>
   <id>http://redmineblog.com/articles/community-update-2</id>
   <content type="html">&lt;p&gt;This is the second installment of what's happening the Redmine community.  This installment covers from March 28th through May 18th, which ended up being somewhere around 700 changes, messages, and updates.  I've tried to highlight some of the major code changes and events in the community.&lt;/p&gt;

&lt;h2&gt;Code Changes&lt;/h2&gt;

&lt;h3&gt;Redmine 0.8.4 released&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.redmine.org/news/26"&gt;Redmine 0.8.4&lt;/a&gt; was released this past weekend.  It's a bug fix release with a security update may affect people running Phusion Passenger.  The list of bugs fixed in the release can be found on the &lt;a href="http://www.redmine.org/wiki/redmine/Changelog#v084-2009-05-17"&gt;changelog&lt;/a&gt;.  Since this fixes a potential security issue (below), all users are recommend to upgrade or audit their Redmine install.&lt;/p&gt;

&lt;h3&gt;Weak autologin token generation algorithm causes duplicate tokens&lt;/h3&gt;

&lt;p&gt;The random sequence generator used by the autologin token wasn't being checked if it was creating unique values.  This generator was replaced with the one from Ruby on Rails in &lt;code&gt;ActiveSupport::SecureRandom&lt;/code&gt; and a database validation to improve security.  Alexander Pavlov included a &lt;a href="http://www.redmine.org/issues/3351#note-5"&gt;database query&lt;/a&gt; to see if you have been affected by the bug.&lt;/p&gt;

&lt;h3&gt;Add email notification on Wiki changes&lt;/h3&gt;

&lt;p&gt;Jean-Philippe Lang added an option to send email notification of wiki page creations and changes in &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2749"&gt;r2749&lt;/a&gt;.  It can be enabled in the Administration Panel under Email Notifications.  The email notifications look good and include a link to view the diff of the wiki page on Redmine.&lt;/p&gt;

&lt;h3&gt;Create project for no administrator user&lt;/h3&gt;

&lt;p&gt;Jean-Philippe Lang changed how projects are created in Redmine so normal users can now be given permission to create projects.  This is controlled by the "Create Project" permission so each site can turn it on or off for specific users.  &lt;a href="http://www.redmine.org/issues/1007"&gt;#1007&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Users can have multiple roles&lt;/h3&gt;

&lt;p&gt;Jean-Philippe Lang committed yet another great feature to Redmine in &lt;a href="http://www.redmine.org/issues/706"&gt;Issue #706&lt;/a&gt;.  Now a user will be able to have multiple Roles on a project, making it easier to control permissions and security.  I'm going to start using this feature by separating out some common Roles like "Bookkeeper" and "Reports".  Since this was a pretty major feature, there are going to be a few bugs to work out of the system as it's used.  I'd recommend trying it out in a development environment for now and waiting a week or so for any major issues to be resolved.&lt;/p&gt;

&lt;h3&gt;script/about was failing on the production database&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;script/about&lt;/code&gt; is a Ruby script that will print out information about the current Redmine environment including library versions, database versions, and other debugging information.  It looks like there was an error on a Ruby on Rails update so the script would only load the development environment.  In &lt;a href="http://www.redmine.org/projects/redmine/repository/revisions/2733"&gt;r2733&lt;/a&gt; the missing library was added so &lt;code&gt;script/about&lt;/code&gt; should work for production instances again.&lt;/p&gt;

&lt;h2&gt;Community Events&lt;/h2&gt;

&lt;h3&gt;Redmine Blog Plugin&lt;/h3&gt;

&lt;p&gt;Andrew Chaika just released &lt;a href="http://www.redmine.org/boards/3/topics/5782"&gt;Redmine Blog 0.0.3&lt;/a&gt;.  This is a plugin that will give users the ability to write blog posts inside of Redmine.  I think this could be very interesting on larger projects where teams want to store knowledge about the project inside of Redmine itself.&lt;/p&gt;

&lt;h3&gt;Redmine Code Review Plugin&lt;/h3&gt;

&lt;p&gt;Haru Iida released a &lt;a href="http://www.redmine.org/boards/3/topics/5878"&gt;Code Review plugin&lt;/a&gt; for Redmine.  This will let a user add a code review on a particular piece of code in the code repository.  I'm considering using this on my Open Source plugins so others can help to review and improve the code.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;If you hear about something in the Redmine community that you think is useful, please &lt;a href="https://projects.littlestreamsoftware.com/projects/redmine-blog/issues/new"&gt;let me know&lt;/a&gt; about it and I'll try to spread the word.&lt;/p&gt;

&lt;p&gt;Eric&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=hVzEm4p1dVE:02gydr1mT8Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=hVzEm4p1dVE:02gydr1mT8Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=hVzEm4p1dVE:02gydr1mT8Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?i=hVzEm4p1dVE:02gydr1mT8Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RedmineBlog?a=hVzEm4p1dVE:02gydr1mT8Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RedmineBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RedmineBlog/~4/hVzEm4p1dVE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://redmineblog.com/articles/community-update-2</feedburner:origLink></entry>
 
 
</feed>
