Redmine 0.8.5 Released

Added by Eric Davis on September 14, 2009 in Home Community


Redmine 0.8.5 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 0.8.4. That's a mistake, we forgot to increment the version number when it was tagged.

Security fixes

The Ruby on Rails core team announced two security vulnerabilities in Rails on September 3rd. These were a XSS 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.

Show plugins on script/about

script/about is used to print information about the current Redmine environment, such as the versions of Rails and the database. 0.8.5 has enhanced script/about to list the currently installed Redmine plugins and their versions. This should make it easier to get help on specific plugin versions.

For example:

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

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

Command line subversion tweaks

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.

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 svn hangs while waiting for a response from the user.

Links to closed issues are distinct from open issue

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.

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 issue #3495 for a before and after screenshot.

Mail Handler tweak

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.

New plugin hooks

If you are a plugin developer, 0.8.5 includes a few new plugin hooks that can be used:

  • :controller_messages_new_after_save
  • :controller_messages_reply_after_save
  • :controller_timelog_edit_before_save
  • :controller_wiki_edit_after_save
  • :model_changeset_scan_commit_for_issue_ids_pre_issue_update
  • :view_account_left_bottom
  • :view_account_right_bottom
  • :view_versions_show_contextual hook

To see all of the changes in 0.8.5, check out the Changelog posted to Redmine.org.

RedmineBlog.com now powered by Jekyll

Added by Eric Davis on September 04, 2009 in Home


Last night I migrated RedmineBlog.com to the Jekyll engine. The blog has been running on Mephisto 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 Disqus, 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.

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 bug report for me. Thanks

Eric Davis

Community Update #3

Added by edavis on July 17, 2009 in Code Community Home Plugins Themes


It's time for another update on what's been happening in the Redmine community. This installment covers from May 18th through July 12th.

Code Changes

Anonymous issue creation via email

Redmine's mail handler is a very powerful component, allowing users to send email to create new issues or update existing ones. r2789 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.

Enhancement to about script

The about script, commonly called script/about, is used to let someone know what version of Redmine and Ruby on Rails you are running. #3387 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.

Administration panel breadcrumbs

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. r2810 added breadcrumbs for:

  • Custom Fields
  • Enumerations
  • Issue statuses
  • Roles
  • Trackers
  • Users

Fix for Bazaar merge tags

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 r2780.

Enumerations storage change

r2777 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.

Plugin hooks

A few plugin hooks were added for plugin developers.

  • :view_versions_show_contextual - r2771
  • :view_account_left_bottom - r2772
  • :view_account_right_bottom - r2772
  • :model_changeset_scan_commit_for_issue_ids_pre_issue_update - r2773
  • :controller_messages_new_after_save - r2774
  • :controller_messages_reply_after_save - r2774
  • :controller_wiki_edit_after_save - r2774
  • :controller_timelog_edit_before_save r2775

User Groups under development

I also noticed that Jean-Philippe Lang has started development on user groups in a separate groups 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.

Community Events

There was a huge number of plugins developed over the past months. I'm so happy that the community is really innovating with plugins.

Campfire notification plugin

Edouard Brière created a Redmine plugin that will send issue notifications to a Campfire 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.

Code review plugin - 0.1.8.6

Haru Iida has released a new version of the Code Review plugin. This is a minor release that includes some bug fixes from the last release.

Developer Rates plugin

Shaun Gilroy has released a plugin called Developer Rates. 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.

HoptoadServer plugin

Jan Schulz-Hofen has released the HoptoadServer plugin. Hoptoad 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 Hoptoad 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.

Hudson plugin

Toshiyuki Ando has released a plugin to integrate the Hudson continuous integration system into Redmine. The Hudson plugin 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.

Issue import script

Joe Chin Hi Rene posted an example script that can be used to import issues 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.

Laconi.ca plugin

Ciaran Jessup has released a Laconi.ca plugin 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.

Squeejee theme - 0.2.0

Mischa The Evil has uploaded a new version of the Squeejee theme 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.

Redmine Collapse plugin - 0.2.2

Mischa The Evil also released a few updates to his Redmine Collapse 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 plugin page.

Watersky theme

Konstantin Zaitsev has posted a new theme for Redmine, titled watersky. This is a nice blue theme for Redmine, using images instead of text links on the menus.

Wiki Extensions plugin

Haru Iida released another plugin which adds a few new wiki macros to Redmine, titled Wiki Extensions. 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.


If you hear about something in the Redmine community that you think is useful, please let me know about it and I'll try to spread the word.

Eric

Redmine Demo - now available at demo.redmine.org

Added by edavis on June 15, 2009 in Community Home


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 Redmine demo is now back online. I've set it up on Heroku using their free plan and a PostgreSQL database. This demo is different from the old one in two critical ways:

  1. it's running a newer version of the Redmine trunk (r2784) so you can evaluate the new features that have been added recently
  2. 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

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, send me an email and I'll see what I can do to help.

Eric

Redmine Demo at http://demo.redmine.org

Redmine Hosting - SourceRepo.com

Added by edavis on June 04, 2009 in Community Home


Source Repo

I recently had to opportunity to work with Joe Clarke of SourceRepo.com to add Redmine to their service. SourceRepo.com 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".

I'm happy to have another company support Redmine 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 SourceRepo.com a try and let them know you heard about them from here.

Eric

Community Update #2

Added by edavis on May 19, 2009 in Code Community Home Plugins


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.

Code Changes

Redmine 0.8.4 released

Redmine 0.8.4 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 changelog. Since this fixes a potential security issue (below), all users are recommend to upgrade or audit their Redmine install.

Weak autologin token generation algorithm causes duplicate tokens

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 ActiveSupport::SecureRandom and a database validation to improve security. Alexander Pavlov included a database query to see if you have been affected by the bug.

Add email notification on Wiki changes

Jean-Philippe Lang added an option to send email notification of wiki page creations and changes in r2749. 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.

Create project for no administrator user

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. #1007

Users can have multiple roles

Jean-Philippe Lang committed yet another great feature to Redmine in Issue #706. 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.

script/about was failing on the production database

script/about 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 r2733 the missing library was added so script/about should work for production instances again.

Community Events

Redmine Blog Plugin

Andrew Chaika just released Redmine Blog 0.0.3. 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.

Redmine Code Review Plugin

Haru Iida released a Code Review plugin 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.


If you hear about something in the Redmine community that you think is useful, please let me know about it and I'll try to spread the word.

Eric

Copying a Project

Added by edavis on May 13, 2009 in Code Home


Recently the ability to copy a project was added to the latest Redmine. I thought it would be good to do a quick overview of how it the feature works along with a few screenshots of the process. Issue #1125 on Redmine.org has more details and discussion about the feature.

There are basically three short steps to copying a project.

Step 1. Select the project to use as the source of the copy

The source project will be the one where the data is copied from. Copying will copy the source project's:

  • Project settings - excluding the Project name and identifier
  • Project custom fields
  • Members of the project and their Roles
  • Issues - including issue assignments, time estimates, priorities, and statuses

There is also a plugin hook included so plugins can add data to copy easily. I've already modified the Redmine Budget plugin to copy Deliverables.

To select the project to copy, just click the "Copy" icon in the Projects panel, under Administration > Projects.

Step 2. Edit the project settings of the copied project

After starting the copy, you will be presented with a form for creating the setting of the copied project. This form is populated with the data from the source project but it can be changed before submitting. Once the settings have been setup, submit the form and move onto step 3.

Step 3. Check the copied project

At this point you will now have a new project based on information from the source project. As you can see in the screenshot above, there was 9 issues and 6 members copied. This would be a good time to review the copied data to make any changes that are needed. Both projects are completely separate, you don't need to worry about changing something in one project and having it affect the other.

That's all there is to this feature. It's scheduled to be released in the upcoming Redmine 0.9.0. If you have any suggestions for improving it or have found a bug in it, please open a new issue on Redmine.org.

Eric

Schedules plugin v 0.4.0 review

Added by edavis on May 06, 2009 in Home Plugins


Recently there was a new release of the Redmine Schedules plugin by Brad Beattie of Gossamer Threads Inc.. Since I've been using the first version of it for a few months now, I wanted to do a review of it so others can find out a bit more about it.

What does it do?

The Schedules plugin is a plugin that lets users mange their daily schedules and plan when they will be working on specific projects. It works across projects and have a variety of reporting methods.

Who is it for?

It's for people who want to schedule themselves to work on a project for a period of time. The majority of the reports are useful for managers to see how their staff is doing and to see if any scheduling adjustments need to happen. I use it to plan out when I am going to work on a specific project and to see my work availability.

Setup

Install

The plugin follows the standard install process for Redmine plugins:

  1. Download from the released files or GitHub
  2. Extract the files to vendor/plugins/redmine_schedules
  3. Run rake db:migrate_plugins
  4. Restart Ruby server

Configuration

Schedules adds some new permissions to Redmine, so these will need to be configured in the Roles and Permissions administration panel.

  • View Schedules - is a Role is allowed to see schedules at all?
  • Edit Own Schedule - is a Role is allowed to edit their own schedule?
  • Edit All Schedules - is a Role is allowed to edit other user schedules?

The final configuration the plugin needs is to enable the Schedule module for each project it's to be used on. This can be do in the Project Settings > Modules area.

Features

Schedules is a mature plugin with a lot of features. I'm going to briefly go through some of the major features and one feature I think a lot of people might miss.

User schedules

Each user with the View Schedules permission will get a personal schedule. It can be accessed by the "My schedule" link on the top left menu. The plugin will load the schedule for the current week showing blocks of time for each project the user is scheduled for.

In this example, you can see that the user is scheduled for 2 hours on the "Digitized system-worthy system" project and 6 hours for "Right-sized directional policy" for Monday the 4th. The plugin allows lets a user change the week that is displayed and also page through the next and previous weeks.

User Availability

In addition, each user is able to setup the amount of time they have available per day. This can be used by the user to show that they work Monday through Friday for 7 hours and 8 hours on Tuesday. In the image above, on May 5th there is a light gray block for the an extra hour the user available because their availability is 8 hours for Tuesdays. I use this to see if I have any open availability each day, perfect for those emergency bug fixes.

All user schedules

Once multiple users have entered a schedule, a summary view of all the user's schedules can be found at the "All schedule" link on the sidebar. This report is useful to get an overview of who is working on what project for the week and to plan out any new work.

In the above image, it looks like Desiree Renner has some availability for Monday, Tuesdays, and Friday. If I was her manager I might want to give her some more work on those days or reschedule some work from Wednesday and Thursday to balance it out.

Project schedules

A Project's schedule can be reached by clicking any of the links to the Project on the user schedules or by the Schedule tab that is added to the Project. This schedule looks the same as the user schedules but it collects the times all users are scheduled per day. This report is great for seeing when people are going to be working on a project and if there is a enough staff assigned each week.

Schedule Report

The Schedule report, linked from the sidebar, is a more detailed view of how people are scheduled. Similar to Redmine's own Time Log report, this lets you select a date range and run queries on the data. In heavier staffed projects, this report would be useful to get a long term view on scheduling.

Issue estimated due date

Here's a nice feature that I think a few people have a hard time finding. The purpose of this feature is to edit multiple issues to change their due dates to be the soonest they can be based on who the issue is assigned to and that person's schedule. In order for this to work, some data needs to be setup first:

  1. A Version needs to be created
  2. Issues need to be assigned to a user
  3. Issues need to have an Estimated time entered
  4. Issues need to be assigned to the version

Once this is done, the Versions page will have an "Estimate" link in the top right menu. Clicking this will run the calculations and will provide the estimated due dates for all the issues. This would be a great way to see if a user is overloaded with work and will delay a project.

Summary

Overall, I'm very impressed with the work Brad Beattie has done on this plugin. I've noticed a few bugs in the few months I've used it and they are usually fixed in the next version. I'm hosting the project on my Redmine right now and your thoughts and ideas are welcome.

Eric

Community Update #1

Added by edavis on April 29, 2009 in Code Community Home Plugins


This is the first installment of regular updates of what's happening the Redmine community. I'm going to highlight the recent code changes and some important events by community members. This installment covers from March 20th through March 28th.

Code Changes

There was a lot of activity this past week with Jean-Philippe fixing a lot of bugs that have cropped up in trunk.

Email notifications of status changes on issues used the old status in the subject

In #3194, Chaoqun Zou noticed that if an issue's status was changed, the email notifications would use the old Status name in their subject line. This was fixed by a minor change to the emailing methods in r2673.

Deleting a parent wiki page will prompt about removing child pages.

Before r2676, when a parent wiki page was removed all of the child pages would be deleted also. This is could cause some data loss if the user isn't aware of it. Now, when a parent page is deleted, the user will be prompted with a few options for what to do with the child pages:

  • Move the child pages to the root of the wiki
  • Move the child pages under a different parent page
  • Delete the child pages.

Issue #3202 has some more details about this change.

Missing attachment

Missing attachment files will now return a HTTP 404 not found instead of the 500 error. I've seen this come up a couple of times. r2692

Issue Grouping

Issue Grouping

Jean-Philippe Lang committed a very nice feature to the Issues list in r2696, Issue grouping. Now the Issue List can be grouped by a specific column.

Community Events

Schedules plugin release

Brad Beattie just released a new version of the Schedules plugins. This version should be compatible with both Redmine 0.8.3 and trunk. I've been using Schedules everyday since it was first released to help plan out my day.

Local avatar plugin released

Andrew Chaika has been busy developing a few plugins for Redmine. He has an Local Avatars plugin that will let administrators use local versions of user avatars instead of the Gravatar service. Like he said, this would be useful for corporate emails that can't use Gravatar.

Vote plugin released

Not to be content with only one release, Andrew Chaika also released the first version of the Issue Vote plugin. This plugin will allow users to vote on issues. This would be extremely useful for public or Open Source projects to discover user interest. I'm going to be looking at adding it to my Redmine soon.

Rate and Budget plugins released

I've also released the first version of the Redmine Rate plugin and an update to the Budget plugin. I personally think they are great plugins, but I'm little biased.

Synchronizing Two Git Repositories

Farzad FARID recently wrote up a great tutorial for synchronizing two git repositories with Redmine. In his example, he configured his Redmine git repository to sync up with a GitHub one.


If you hear about something in the Redmine community that you think is useful, please let me know about it and I'll try to spread the word.

Eric

Setup Redmine to send email using GMail

Added by edavis on April 20, 2009 in Code Home


There's been quite a discussion about setting up Redmine to use GMail's SMTP server for sending emails. I've seen this being a pain point for a lot of people so I've decided to write up a set of directions on how to get your Redmine setup to use GMail's SMTP. I've tested this process with Redmine 0.8.3, 0.8-stable, and trunk (r2670) using my personal GMail account.

1. Install the action_mailer_optional_tls plugin

The action_mailer_optional_tls_plugin adds a TLS option to Redmine's emailing library, ActionMailer. TLS is a version of SSL which is required by GMail in order to send email.

To install this plugin, use the script/plugin command in your Redmine directory:

ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git

2. Configure your email.yml

Redmine uses email.yml to store all the configuration for the email servers. This is used instead of config/environment.rb to setup a connection to a SMTP server. Each Redmine environment (development, test, production) can have it's own configuration section. If you are configuring Redmine to be used on a production server, I'd recommend just configuring the production mode like below:

# File: config/email.yml
production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "your_email@gmail.com"
    password: "your_password"

A complete file that uses GMail for development and production would look like:

# File: config/email.yml
production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "your_email@gmail.com"
    password: "your_password"

development:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "your_email@gmail.com"
    password: "your_password"

test:
  delivery_method: :test

One important thing to watch, is that this file only uses spaces. If there are tabs anywhere it in, Redmine will not be able to read the file correctly and you will not be able to connect to GMail.

3. Start up Redmine and test your Email

Next it's time to start up Redmine and to send a test email. Make sure that you start Redmine in the same mode as you configured above (e.g. production). To send a test email:

  1. Login as an administrator
  2. Go to the Administration panel
  3. Go into the Settings and select the "Email notifications" tab
  4. In the bottom right, click the link to "Send a test email"

This should cause Redmine to send a email using GMail's SMTP. Below you can see a log of the connection from my log/production.log:

Processing SettingsController#index (for 127.0.0.1 at 2009-04-13 16:24:50) [GET]
  Parameters: {"action"=>"index", "controller"=>"settings"}
Rendering template within layouts/base
Rendering settings/edit
Completed in 1029ms (View: 840, DB: 9) | 200 OK [http://localhost/settings]
-> "220 mx.google.com ESMTP 28sm495064wfd.5\r\n"
<- "EHLO smtp.gmail.com\r\n"
-> "250-mx.google.com at your service, [0.0.0.0]\r\n"
-> "250-SIZE 35651584\r\n"
-> "250-8BITMIME\r\n"
-> "250-STARTTLS\r\n"
-> "250-ENHANCEDSTATUSCODES\r\n"
-> "250 PIPELINING\r\n"
<- "STARTTLS\r\n"
-> "220 2.0.0 Ready to start TLS\r\n"
<- "EHLO smtp.gmail.com\r\n"
-> "250-mx.google.com at your service, [0.0.0.0]\r\n"
-> "250-SIZE 35651584\r\n"
-> "250-8BITMIME\r\n"
-> "250-AUTH LOGIN PLAIN\r\n"
-> "250-ENHANCEDSTATUSCODES\r\n"
-> "250 PIPELINING\r\n"
<- "AUTH PLAIN ---------------\r\n"
-> "235 2.7.0 Accepted\r\n"
<- "MAIL FROM:\r\n"
-> "250 2.1.0 OK 28sm495064wfd.5\r\n"
<- "RCPT TO:\r\n"


Processing AdminController#test_email (for 127.0.0.1 at 2009-04-13 16:25:11) [GET]
  Parameters: {"action"=>"test_email", "controller"=>"admin"}
Sent mail to 
-> "250 2.1.5 OK 28sm495064wfd.5\r\n"
<- "DATA\r\n"
-> "354  Go ahead 28sm495064wfd.5\r\n"
writing message from String
wrote 2605 bytes
-> "250 2.0.0 OK 1239665113 28sm495064wfd.5\r\n"
<- "QUIT\r\n"
-> "221 2.0.0 closing connection 28sm495064wfd.5\r\n"
Redirected to controllersettingstabnotificationsactionedit
Completed in 2293ms (DB: 4) | 302 Found [http://localhost/admin/test_email]

If you're curious about what the connection is saying, any -> is GMail talking to Redmine and any <- is Redmine talking to Gmail. The important thing to see is where GMail responds with a 250 status code near the end of the connection. This means that the connection was successful and that the email will be delivered. About a minute later, I saw the test email in my inbox from GMail.

Conclusion

If you follow this set of directions, you can easily setup GMail with Redmine. If this was helpful, please let me know in the comments or suggest a new article.