<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>Recent Posts in Enterprise Recipes with Ruby and Rails | Pragmatic Forums</title>
    <link>http://forums.pragprog.com/forums/80/posts</link>
    <language>en-us</language>
    <ttl>60</ttl>
    <item>
      <title>Store Passwords Securely comments posted by Maik Schmidt @ Fri, 02 Jan 2009 19:18:15 -0000</title>
      <description>&lt;p&gt;Cody:&lt;/p&gt;


	&lt;p&gt;The bcrypt approach is more secure, I think. bcrypt is used by OpenBSD and has been developed especially for hashing passwords. &lt;span class="caps"&gt;SHA&lt;/span&gt;, MD5 and friends were designed for calculating unique fingerprints of large amounts of data as fast as possible.&lt;/p&gt;


	&lt;p&gt;Under the hood bcrypt also hashes the password adding some salt, but it uses a hash algorithm that is computationally expensive. This makes it much more difficult to crack a password, because the attacker has to use the expensive algorithm, too.&lt;/p&gt;


	&lt;p&gt;In the section titled &amp;#8220;How bcrypt() works&amp;#8221; at &lt;a href="http://bcrypt-ruby.rubyforge.org/"&gt;http://bcrypt-ruby.rubyforge.org/&lt;/a&gt; you can find a short and nice description of bcrypt.&lt;/p&gt;


	&lt;p&gt;Cheers,&lt;/p&gt;


	&lt;p&gt;Maik&lt;/p&gt;</description>
      <pubDate>Fri, 02 Jan 2009 19:18:15 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:997:7280</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/997</link>
    </item>
    <item>
      <title>Store Passwords Securely comments posted by Cody Russell @ Fri, 02 Jan 2009 17:59:58 -0000</title>
      <description>&lt;p&gt;I don&amp;#8217;t know much about cryptology or anything, and now I&amp;#8217;m presented with two different options for authenticating users and storing passwords and I&amp;#8217;m not sure which is the better one to use.&lt;/p&gt;


	&lt;p&gt;The first is Recipe #31 from Chad Fowler&amp;#8217;s Rails Recipes book, and the second is yours.&lt;/p&gt;


	&lt;p&gt;Can you, or anyone really, tell me which of the two is the more modern/preferred/secure way of doing it?&lt;/p&gt;</description>
      <pubDate>Fri, 02 Jan 2009 17:59:58 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:997:7279</guid>
      <author>Cody Russell</author>
      <link>http://forums.pragprog.com/forums/80/topics/997</link>
    </item>
    <item>
      <title>User model, LDAP auth and associations posted by Phil Gardner @ Wed, 17 Dec 2008 21:37:39 -0000</title>
      <description>&lt;p&gt;Hi&lt;/p&gt;


	&lt;p&gt;I use Novell&amp;#8217;s eDirectory in this context, eDirectory has a &lt;span class="caps"&gt;GUID&lt;/span&gt; attribute, I would use something like this at it is constant for the life of the object, email addresses, phone numbers and even first names and last names change. Marriage, Divorce, changed &lt;span class="caps"&gt;ISP&lt;/span&gt; etc all make using user attributes problematic.&lt;/p&gt;


	&lt;p&gt;Regards&lt;br /&gt;Phil&lt;/p&gt;</description>
      <pubDate>Wed, 17 Dec 2008 21:37:39 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1406:6918</guid>
      <author>Phil Gardner</author>
      <link>http://forums.pragprog.com/forums/80/topics/1406</link>
    </item>
    <item>
      <title>Create Strong and Convenient Passwords posted by Steven Finnegan @ Tue, 02 Dec 2008 21:21:18 -0000</title>
      <description>&lt;p&gt;&lt;span class="caps"&gt;YES&lt;/span&gt;!  That worked!&lt;br /&gt;Now that I see the problem, I should mention (ahem) that my macs are set up with case-sensitive filesystems. This was done because when developing RoR systems on a non-case-sensitive mac, I would then have problems with the deployed versions running under FreeBSD, which is case-sensitive.  Looks like somebody is assuming a non-case-sensitive FS.&lt;/p&gt;


	&lt;p&gt;Thanks for all your help!&lt;/p&gt;


	&lt;p&gt;sjf&lt;/p&gt;</description>
      <pubDate>Tue, 02 Dec 2008 21:21:18 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1484:6547</guid>
      <author>Steven Finnegan</author>
      <link>http://forums.pragprog.com/forums/80/topics/1484</link>
    </item>
    <item>
      <title>Create Strong and Convenient Passwords posted by Maik Schmidt @ Tue, 02 Dec 2008 18:25:42 -0000</title>
      <description>&lt;p&gt;Hi, Steven!&lt;/p&gt;


	&lt;p&gt;I have setup a complete new Ruby environment in a Parallels virtual machine on Windows XP. I could not fully reproduce your problem, but found some strange behavior regarding the name of the &lt;span class="caps"&gt;YAML&lt;/span&gt; library. Please replace &lt;code&gt;require 'YAML'&lt;/code&gt; in line 24 of ngrams.rb with &lt;code&gt;require 'yaml'&lt;/code&gt; and try again.&lt;/p&gt;


	&lt;p&gt;Cheers,&lt;/p&gt;


	&lt;p&gt;Maik&lt;/p&gt;</description>
      <pubDate>Tue, 02 Dec 2008 18:25:42 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1484:6540</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/1484</link>
    </item>
    <item>
      <title>Create Strong and Convenient Passwords posted by Steven Finnegan @ Mon, 01 Dec 2008 15:52:01 -0000</title>
      <description>&lt;p&gt;I have 2 Macs (both intel)&amp;#8212;both behave the same (though one may not be as current). Both return the following to your two commands:&lt;br /&gt;&lt;pre&gt;
&lt;code&gt;
Luna:~ sjf$ ruby -e 'puts $:'
/Library/Ruby/Site/1.8
/Library/Ruby/Site/1.8/powerpc-darwin9.0
/Library/Ruby/Site/1.8/universal-darwin9.0
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin9.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0
.
Luna:~ sjf$ echo $RUBYLIB

Luna:~ sjf$ 
&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 01 Dec 2008 15:52:01 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1484:6498</guid>
      <author>Steven Finnegan</author>
      <link>http://forums.pragprog.com/forums/80/topics/1484</link>
    </item>
    <item>
      <title>Create Strong and Convenient Passwords posted by Maik Schmidt @ Mon, 01 Dec 2008 15:15:16 -0000</title>
      <description>&lt;p&gt;I guess there&amp;#8217;s something wrong with your load path. What&amp;#8217;s the output of the following two commands:&lt;/p&gt;


	&lt;p&gt;$ ruby -e &amp;#8216;puts $:&amp;#8217;&lt;br /&gt;$ echo $RUBYLIB&lt;/p&gt;</description>
      <pubDate>Mon, 01 Dec 2008 15:15:16 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1484:6494</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/1484</link>
    </item>
    <item>
      <title>Create Strong and Convenient Passwords posted by Steven Finnegan @ Mon, 01 Dec 2008 12:51:53 -0000</title>
      <description>&lt;p&gt;Thanks for your help, Maik!&lt;/p&gt;


	&lt;p&gt;Well, you&amp;#8217;re right, it&amp;#8217;s not found. For what its worth, this is running under &lt;span class="caps"&gt;OS X&lt;/span&gt; Leopard. I believe I have everything updated to current releases.&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
Luna:~ sjf$ irb
&amp;gt;&amp;gt; require 'yaml'
=&amp;gt; false
&amp;gt;&amp;gt; require 'YAML'
LoadError: no such file to load -- YAML
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
    from (irb):2

&amp;gt;&amp;gt; quit
Luna:~ sjf$ ruby --version
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
Luna:~ sjf$ 
&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;

	&lt;p&gt;Interestingly, it &lt;span class="caps"&gt;DOES&lt;/span&gt; seem to be on the disk&amp;#8230;&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
Luna:~ sjf$ sudo find / -name yaml
Password:
/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/yaml
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/yaml
&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;</description>
      <pubDate>Mon, 01 Dec 2008 12:51:53 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1484:6486</guid>
      <author>Steven Finnegan</author>
      <link>http://forums.pragprog.com/forums/80/topics/1484</link>
    </item>
    <item>
      <title>Create Strong and Convenient Passwords posted by Maik Schmidt @ Mon, 01 Dec 2008 07:32:52 -0000</title>
      <description>&lt;p&gt;Hi, Steven!&lt;/p&gt;


	&lt;p&gt;The ngrams gem needs the &lt;span class="caps"&gt;YAML&lt;/span&gt; library and tries to require it in line 24 of the file /Library/Ruby/Gems/1.8/gems/ngrams-0.1.0/lib/ngrams/ngrams.rb. Unfortunately, it cannot be found on your system although it&amp;#8217;s part of the Ruby standard library (at least in version 1.8 which seems to be the version you&amp;#8217;re using). Could you check, if you can reproduce the following irb session:&lt;/p&gt;


	&lt;p&gt;$ irb&lt;br /&gt;&amp;gt;&amp;gt; require &amp;#8216;yaml&amp;#8217;&lt;br /&gt;=&amp;gt; true&lt;br /&gt;&amp;gt;&amp;gt; require &amp;#8216;YAML&amp;#8217;&lt;br /&gt;/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/YAML.rb:87: warning: already initialized constant Resolver&lt;br /&gt;/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/YAML.rb:88: warning: already initialized constant DefaultResolver&lt;br /&gt;/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/YAML.rb:90: warning: already initialized constant GenericResolver&lt;br /&gt;/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/YAML.rb:91: warning: already initialized constant Parser&lt;br /&gt;/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/YAML.rb:92: warning: already initialized constant Emitter&lt;br /&gt;=&amp;gt; true&lt;/p&gt;


	&lt;p&gt;Cheers,&lt;/p&gt;


	&lt;p&gt;Maik&lt;/p&gt;</description>
      <pubDate>Mon, 01 Dec 2008 07:32:52 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1484:6477</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/1484</link>
    </item>
    <item>
      <title>Create Strong and Convenient Passwords posted by Steven Finnegan @ Sun, 30 Nov 2008 20:28:03 -0000</title>
      <description>&lt;p&gt;When I try to run this program (convenient_password.rb) I get the following errors.&lt;br /&gt;&lt;pre&gt;
&lt;code&gt;
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- YAML (LoadError)
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `require'
    from /Library/Ruby/Gems/1.8/gems/ngrams-0.1.0/lib/ngrams/ngrams.rb:24
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `require'
    from /Library/Ruby/Gems/1.8/gems/ngrams-0.1.0/lib/ngrams.rb:2
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:32:in `require'
    from /Users/sjf/Desktop/conv_pswds.rb:32
&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;


	&lt;p&gt;I have the ngrams gem installed.&lt;/p&gt;</description>
      <pubDate>Sun, 30 Nov 2008 20:28:03 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1484:6468</guid>
      <author>Steven Finnegan</author>
      <link>http://forums.pragprog.com/forums/80/topics/1484</link>
    </item>
    <item>
      <title>User model, LDAP auth and associations posted by Maik Schmidt @ Thu, 20 Nov 2008 17:48:28 -0000</title>
      <description>&lt;p&gt;In recipe 9 I only wanted to show how to use &lt;span class="caps"&gt;LDAP&lt;/span&gt; for authentication purposes, so I did not put the example code into any specific context.&lt;/p&gt;


	&lt;p&gt;Despite this your point is still valid, of course, and the problem you describe is nearly inevitable whenever you mix &lt;span class="caps"&gt;LDAP&lt;/span&gt; and relational databases. As far as I know there is no way to automatically ensure referential integrity between an &lt;span class="caps"&gt;LDAP&lt;/span&gt; repository and a relational database. You have to take care about it yourself and as you&amp;#8217;ve said before: this is no fun.&lt;/p&gt;


	&lt;p&gt;There are several ways to deal with this problem. Unfortunately, none of them is perfect.&lt;/p&gt;


	&lt;p&gt;If you really need user information for business purposes and not only for authentication, you should try to manage as much of your user attributes as possible in the &lt;span class="caps"&gt;LDAP&lt;/span&gt; repository. For this purpose you can use ActiveLDAP, for example, and in my last book (&lt;a href="http://pragprog.com/titles/fr_eir/enterprise-integration-with-ruby"&gt;http://pragprog.com/titles/fr_eir/enterprise-integration-with-ruby&lt;/a&gt;) I have devoted a whole chapter to this topic (you can read the beginning of the &lt;span class="caps"&gt;LDAP&lt;/span&gt; chapter online: &lt;a href="http://media.pragprog.com/titles/fr_eir/ldap.pdf"&gt;http://media.pragprog.com/titles/fr_eir/ldap.pdf&lt;/a&gt;).&lt;/p&gt;


	&lt;p&gt;This strategy will at least help to keep the user data &lt;span class="caps"&gt;DRY&lt;/span&gt; and it makes operations on users a bit easier. But you still have to map the &lt;span class="caps"&gt;LDAP&lt;/span&gt; entities to database rows somewhere and therefore you need a key. I suggest to use a user&amp;#8217;s e-mail address and map it to the according &lt;span class="caps"&gt;LDAP&lt;/span&gt; attribute. This way you can easily identify the user in your database right after you&amp;#8217;ve read it from the &lt;span class="caps"&gt;LDAP&lt;/span&gt; repository.&lt;/p&gt;


	&lt;p&gt;Cheers,&lt;/p&gt;


	&lt;p&gt;Maik&lt;/p&gt;</description>
      <pubDate>Thu, 20 Nov 2008 17:48:28 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1406:6219</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/1406</link>
    </item>
    <item>
      <title>User model, LDAP auth and associations posted by Michael Schuerig @ Wed, 19 Nov 2008 19:26:14 -0000</title>
      <description>&lt;p&gt;Recipe 9 shows how to authenticate a user through an &lt;span class="caps"&gt;LDAP&lt;/span&gt; server. The user is implemented as a plain Ruby class, not an ActiveRecord model, which precludes any associations involving users.&lt;/p&gt;


	&lt;p&gt;In the past I&amp;#8217;ve worked around this with association tables, relating logins to group memberships, say. Doing it that way is no fun, unfortunately.&lt;/p&gt;


	&lt;p&gt;Any suggestions on how to work with models that are not backed by a DB table?&lt;/p&gt;</description>
      <pubDate>Wed, 19 Nov 2008 19:26:14 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:1406:6181</guid>
      <author>Michael Schuerig</author>
      <link>http://forums.pragprog.com/forums/80/topics/1406</link>
    </item>
    <item>
      <title>Store Passwords Securely comments posted by Maik Schmidt @ Wed, 01 Oct 2008 16:27:15 -0000</title>
      <description>&lt;p&gt;Johan:&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m not sure if I&amp;#8217;ve fully understood your problem. I suppose you&amp;#8217;ve created views for creating and editing users and you&amp;#8217;ve used Rails&amp;#8217; form_for() helper to manage a user&amp;#8217;s attributes. And when editing a user the password&amp;#8217;s hash value appeared in the password field?&lt;/p&gt;


	&lt;p&gt;Of course, your solution works, but wouldn&amp;#8217;t it be easier to initialize the password fields in the edit view:&lt;/p&gt;


	&lt;p&gt;&amp;lt;%= password_field &amp;#8220;password&amp;#8221;, :value=&amp;gt;&amp;#8221;&amp;#8221; %&amp;gt;&lt;/p&gt;


	&lt;p&gt;This way you could set whatever default value you like and you could still name the password attribute &amp;#8220;password&amp;#8221;, which is slightly better than &amp;#8220;password_hash&amp;#8221; in my opinion.&lt;/p&gt;


	&lt;p&gt;Cheers,&lt;/p&gt;


	&lt;p&gt;Maik&lt;/p&gt;</description>
      <pubDate>Wed, 01 Oct 2008 16:27:15 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:997:4722</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/997</link>
    </item>
    <item>
      <title>Store Passwords Securely comments posted by Johan Allard @ Tue, 30 Sep 2008 00:01:19 -0000</title>
      <description>&lt;p&gt;Ok, I&amp;#8217;ve now updated some of the code and changed the following:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  def password_hash # instead of def password
    @password_hash ||= BCrypt::Password.new(self.hashed_password)
  end

    def self.authenticate(name, password)
    if user = self.find_by_name(name)
      user = nil if user.password_hash != password
    end
    user
  end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This will leave the password variable blank and won&amp;#8217;t show up in the users password field, but will still be hashed properly when the password is set.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Sep 2008 00:01:19 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:997:4698</guid>
      <author>Johan Allard</author>
      <link>http://forums.pragprog.com/forums/80/topics/997</link>
    </item>
    <item>
      <title>Store Passwords Securely comments posted by Johan Allard @ Mon, 29 Sep 2008 22:48:17 -0000</title>
      <description>&lt;p&gt;Hi,&lt;/p&gt;


	&lt;p&gt;I just decided to implement the store passwords securely recipe and one thing that doesn&amp;#8217;t make sense with is that since it&amp;#8217;s using the password attribute when reading the password, this means that in my edit page, there&amp;#8217;s now the encrypted password string being displayed in the password field, where&amp;#8217;s I&amp;#8217;d want it to be blank until I actually change the password for that particular user. Or am I missing something?&lt;/p&gt;


	&lt;p&gt;Cheers&lt;/p&gt;


	&lt;p&gt;Johan&lt;/p&gt;</description>
      <pubDate>Mon, 29 Sep 2008 22:48:17 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:997:4697</guid>
      <author>Johan Allard</author>
      <link>http://forums.pragprog.com/forums/80/topics/997</link>
    </item>
    <item>
      <title>A few suggestions posted by Maik Schmidt @ Tue, 23 Sep 2008 06:00:35 -0000</title>
      <description>&lt;p&gt;Hi Bharat!&lt;/p&gt;


	&lt;p&gt;Thank you very much for your suggestions!&lt;/p&gt;


	&lt;p&gt;ad 1:&lt;br /&gt;Mike&amp;#8217;s and my book cover the same topics in a few places, but there&amp;#8217;s no repetition neither in the recipes nor in the examples. My book presents solutions for typical enterprise environments that is for projects that have to integrate with existing infrastructures.  Take the chapters about asynchronous messaging, for example. Mike shows how to implement lightweight solutions based on Ruby libraries while the samples in my book depend on full-blown message-oriented middleware.&lt;/p&gt;


	&lt;p&gt;ad 2:&lt;br /&gt;You&amp;#8217;re absolutely right: meta-programming is an important topic and it is important in enterprise environments, too. But I think it&amp;#8217;s nearly impossible to explain good (and secure) meta-programming techniques in a recipe style and I&amp;#8217;m afraid I cannot add much to Dave&amp;#8217;s excellent screencasts. They are really great!&lt;/p&gt;


	&lt;p&gt;ad 3:&lt;br /&gt;That&amp;#8217;s a good suggestion and right now I&amp;#8217;m improving the cross-references.&lt;/p&gt;


	&lt;p&gt;Regards,&lt;/p&gt;


	&lt;p&gt;Maik&lt;/p&gt;</description>
      <pubDate>Tue, 23 Sep 2008 06:00:35 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:971:4636</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/971</link>
    </item>
    <item>
      <title>A few suggestions posted by Bharat Ruparel @ Sun, 21 Sep 2008 22:26:18 -0000</title>
      <description>&lt;p&gt;Hello Maik,&lt;br /&gt;I will definitely buy your book.  The topics that you cover are quite useful.  A few suggestions:&lt;/p&gt;


	&lt;p&gt;1.  Please make sure that you do not repeat what has been already covered in Mike Clark&amp;#8217;s excellent Advanced Rails Recipes book.  It is OK to expand on or present a different angle on the same topic, but not OK to merely repeat what has already been explained in that book.&lt;/p&gt;


	&lt;p&gt;2.  If you can include a few recipes on meta-programming, that would be excellent.  For example, I had to struggle hard on creating &amp;#8220;library&amp;#8221; code that seamlessly takes care of US and UK dates even when they are represented as strings.  Dave Thomas has done an excellent job of explaining meta-programming concepts in his screencasts.  A few applications of meta-programming for Rails may not be a bad idea.&lt;/p&gt;


	&lt;p&gt;3.  Looking at Bala&amp;#8217;s comments, I can understand where he is coming from and I understand your response as well.  Perhaps you want to follow the same model as Advanced Rails Recipes and Obie Fernandez&amp;#8217;s equally good book the Rails Way?  That is, make sure that the recipes are heavily cross-referenced so that the readers can connect the dots.  If you have used outside sources to enhance and clarify your own thoughts, a reference to those will be very valuable.  It is OK to present the fundamentals of a recipe without getting bogged down in details as long as you provide a way for readers to put things together.&lt;/p&gt;


	&lt;p&gt;Keep up the good work.  I am looking forward to buying your book.&lt;/p&gt;


	&lt;p&gt;Regards,&lt;/p&gt;


	&lt;p&gt;Bharat&lt;/p&gt;</description>
      <pubDate>Sun, 21 Sep 2008 22:26:18 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:971:4621</guid>
      <author>Bharat Ruparel</author>
      <link>http://forums.pragprog.com/forums/80/topics/971</link>
    </item>
    <item>
      <title>Holy Mackerel! posted by Joseph Grace @ Sat, 13 Sep 2008 22:53:06 -0000</title>
      <description>&lt;p&gt;Dear Maik Schmidt:&lt;/p&gt;


	&lt;p&gt;What a great book.  Who would have thought an &amp;#8220;Enterprise&amp;#8221; book could contain so much great &amp;#8220;random&amp;#8221; (but I guess enterprisey) information, yet be so easy to read?  I am surprised at how many recipes touch on projects I need to do.&lt;/p&gt;


	&lt;p&gt;I like the way you often discuss multiple ways of doing things in relation to each other, and how you factor in the currency of the solutions (even into future).  It makes the book seem very current in a fast moving Ruby/Rails environment.  You also keep the topics very brief and to the point, yet useful.  They are all so&amp;#8230; bite-size and yummy&amp;#8230; just begging for experimentation.&lt;/p&gt;


	&lt;p&gt;I also like how you&amp;#8217;ve grouped some recipes together, not just in the same category, but in such a way that they seem to build on one another.  Your cross-references are great reinforcement (and reminders) for knowledge from other categories too.  Nice.&lt;/p&gt;


	&lt;p&gt;I can hardly wait to try out many of your recipes.  Thank you for writing this book.&lt;/p&gt;


	&lt;p&gt;Well done, bravo, &amp;#38; eureka!&lt;/p&gt;</description>
      <pubDate>Sat, 13 Sep 2008 22:53:06 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:943:4530</guid>
      <author>Joseph Grace</author>
      <link>http://forums.pragprog.com/forums/80/topics/943</link>
    </item>
    <item>
      <title>Integrate ActiveMerchant With Rails posted by Maik Schmidt @ Wed, 10 Sep 2008 16:29:24 -0000</title>
      <description>&lt;p&gt;Hi, Bala!&lt;/p&gt;


	&lt;p&gt;Thank you for your comment on the &amp;#8220;Integrate ActiveMerchant With Rails&amp;#8221; recipe.&lt;/p&gt;


	&lt;p&gt;You are right: the order process has been simplified to put emphasis on  integrating ActiveMerchant with Rails. I did that to keep the recipe short and to not distract the reader from the recipe&amp;#8217;s main topic.&lt;/p&gt;


	&lt;p&gt;Order processing is a problem that cannot be solved with a general solution and strongly differs from company to company. Hence, I did not devote a recipe to it and I assume that the reader is familiar with order processing at least in his environment. But you can find a more elaborate example in the &amp;#8220;Transfer Money with PayPal&amp;#8221; recipe.&lt;/p&gt;


	&lt;p&gt;In your blog entry you write the following:&lt;/p&gt;


	&lt;p&gt;&amp;#8220;As soon as you create an order, you must set it&amp;#8217;s initial state and process that order in the background. You can use run rake task using a &lt;span class="caps"&gt;CRON&lt;/span&gt; job that processes the orders. What happens if the Gateway is down? What will you recover from network errors? These things happen in the real world and your software that affect the bottom line must be able to handle it.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Most of your points are valid although I do not think that &lt;strong&gt;all&lt;/strong&gt; orders have to be processed in the background. I present solutions for all nasty real-world problems you&amp;#8217;ve mentioned in the Messaging chapter. In addition, these solutions are more sophisticated and more reliable than cron jobs. For example, you&amp;#8217;d better use asynchronous messaging for processing your orders in the background.&lt;/p&gt;


	&lt;p&gt;Maik&lt;/p&gt;</description>
      <pubDate>Wed, 10 Sep 2008 16:29:24 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:933:4500</guid>
      <author>Maik Schmidt</author>
      <link>http://forums.pragprog.com/forums/80/topics/933</link>
    </item>
    <item>
      <title>Integrate ActiveMerchant With Rails posted by Bala Paranj @ Wed, 10 Sep 2008 00:53:42 -0000</title>
      <description>&lt;p&gt;I find it shocking to read this recipe. Toy examples and no thoughts about robustness makes this a recipe for disaster.&lt;/p&gt;


	&lt;p&gt;Check out my critical feedback about this recipe on my blog:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://bparanj.blogspot.com/2008/09/integrate-activemerchant-with-rails.html"&gt;http://bparanj.blogspot.com/2008/09/integrate-activemerchant-with-rails.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 10 Sep 2008 00:53:42 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:933:4485</guid>
      <author>Bala Paranj</author>
      <link>http://forums.pragprog.com/forums/80/topics/933</link>
    </item>
    <item>
      <title>Integrate ActiveMerchant With Rails posted by Bala Paranj @ Wed, 10 Sep 2008 00:51:24 -0000</title>
      <description>&lt;p&gt;I find it shocking to read this recipe. Toy examples and no thoughts about robustness makes this a recipe for disaster.&lt;/p&gt;


	&lt;p&gt;Check out my critical feedback about this recipe on my blog:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://bparanj.blogspot.com/2008/09/integrate-activemerchant-with-rails.html"&gt;http://bparanj.blogspot.com/2008/09/integrate-activemerchant-with-rails.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 10 Sep 2008 00:51:24 -0000</pubDate>
      <guid isPermaLink="false">forums.pragprog.com:80:932:4484</guid>
      <author>Bala Paranj</author>
      <link>http://forums.pragprog.com/forums/80/topics/932</link>
    </item>
  </channel>
</rss>
