Real beginner question here. I don''t really know rake, so I''m stumbling. As I set a dir to hold my feature files, etc., I''m simply copying the files structure I see in /usr/lib/ruby/gems/1.8/gems/cucumber-0.1.13/examples/i18n/en/ I know we need a Rake file ME little dir tree, but I don''t think I can just copy the one in the examples tree - or rather, I think I have to alter the first line: $:.unshift(File.dirname(__FILE__) + ''/../../../lib'') I don''t know if this is bash or some ruby thing I haven''t figured out, but mostly I don''t know what to do with the ''/../../../lib'') part. It looks like its trying to locate the source dir, but if so, why not just specify + ''lib''...? After staring at it a bit, I have to admit I don''t grasp what''s going on. Can someone clue me in? Tom -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist Bellingham, Washington, U.S.A: (360) 920-1226 << tc at tomcloyd.com >> (email) << TomCloyd.com >> (website) << sleightmind.wordpress.com >> (mental health weblog) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On Thu, Jan 15, 2009 at 4:07 AM, Tom Cloyd <tomcloyd at comcast.net> wrote:> Real beginner question here. I don''t really know rake, so I''m stumbling. > > As I set a dir to hold my feature files, etc., I''m simply copying the files > structure I see in > /usr/lib/ruby/gems/1.8/gems/cucumber-0.1.13/examples/i18n/en/ > > I know we need a Rake file ME little dir tree, but I don''t think I can just > copy the one in the examples tree - or rather, I think I have to alter the > first line: > > $:.unshift(File.dirname(__FILE__) + ''/../../../lib'') > > I don''t know if this is bash or some ruby thing I haven''t figured out, but > mostly I don''t know what to do with the ''/../../../lib'') part. It looks like > its trying to locate the source dir, but if so, why not just specify + > ''lib''...? After staring at it a bit, I have to admit I don''t grasp what''s > going on. > > Can someone clue me in?It has to find the source dir relative to that file. ''/../../../lib'' means to go back up the dir structure three levels and then look for lib there. Pat
On Thu, Jan 15, 2009 at 9:16 AM, Pat Maddox <pergesu at gmail.com> wrote:> On Thu, Jan 15, 2009 at 4:07 AM, Tom Cloyd <tomcloyd at comcast.net> wrote: >> Real beginner question here. I don''t really know rake, so I''m stumbling. >> >> As I set a dir to hold my feature files, etc., I''m simply copying the files >> structure I see in >> /usr/lib/ruby/gems/1.8/gems/cucumber-0.1.13/examples/i18n/en/ >> >> I know we need a Rake file ME little dir tree, but I don''t think I can just >> copy the one in the examples tree - or rather, I think I have to alter the >> first line: >> >> $:.unshift(File.dirname(__FILE__) + ''/../../../lib'') >> >> I don''t know if this is bash or some ruby thing I haven''t figured out, but >> mostly I don''t know what to do with the ''/../../../lib'') part.That line is there because these examples are in the cucumber directory tree, and that ensures that the features are run with the code in that tree (and not an installed cucumber gem). So you should be able to blow that line away. HTH, David>> It looks like >> its trying to locate the source dir, but if so, why not just specify + >> ''lib''...? After staring at it a bit, I have to admit I don''t grasp what''s >> going on. >> >> Can someone clue me in? > > It has to find the source dir relative to that file. ''/../../../lib'' > means to go back up the dir structure three levels and then look for > lib there. > > Pat > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
On Thu, Jan 15, 2009 at 4:16 PM, Pat Maddox <pergesu at gmail.com> wrote:> On Thu, Jan 15, 2009 at 4:07 AM, Tom Cloyd <tomcloyd at comcast.net> wrote: > > Real beginner question here. I don''t really know rake, so I''m stumbling. > > > > As I set a dir to hold my feature files, etc., I''m simply copying the > files > > structure I see in > > /usr/lib/ruby/gems/1.8/gems/cucumber-0.1.13/examples/i18n/en/ > > > > I know we need a Rake file ME little dir tree, but I don''t think I can > just > > copy the one in the examples tree - or rather, I think I have to alter > the > > first line: > > > > $:.unshift(File.dirname(__FILE__) + ''/../../../lib'') > > >This is a very, very common idiom in Ruby. $: is a global variable. It''s an alias for $LOAD_PATH. This is an Array of directories where Ruby scans for libraries when you do a require. Similar to Java''s CLASSPATH. File.dirname(__FILE__) returns the directory of the current script unshift puts an element at position 0 in an Array.> > > I don''t know if this is bash or some ruby thing I haven''t figured out, > but > > mostly I don''t know what to do with the ''/../../../lib'') part. It looks > like > > its trying to locate the source dir, but if so, why not just specify + > > ''lib''...? After staring at it a bit, I have to admit I don''t grasp what''s > > going on. > > > > Can someone clue me in? > > It has to find the source dir relative to that file. ''/../../../lib'' > means to go back up the dir structure three levels and then look for > lib there. >When you have cucumber as a gem you can delete that line.> > Pat > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-- Aslak (::) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20090115/d41e374b/attachment.html>
David Chelimsky wrote:> On Thu, Jan 15, 2009 at 9:16 AM, Pat Maddox <pergesu at gmail.com> wrote: > >> On Thu, Jan 15, 2009 at 4:07 AM, Tom Cloyd <tomcloyd at comcast.net> wrote: >> >>> Real beginner question here. I don''t really know rake, so I''m stumbling. >>> >>> As I set a dir to hold my feature files, etc., I''m simply copying the files >>> structure I see in >>> /usr/lib/ruby/gems/1.8/gems/cucumber-0.1.13/examples/i18n/en/ >>> >>> I know we need a Rake file ME little dir tree, but I don''t think I can just >>> copy the one in the examples tree - or rather, I think I have to alter the >>> first line: >>> >>> $:.unshift(File.dirname(__FILE__) + ''/../../../lib'') >>> >>> I don''t know if this is bash or some ruby thing I haven''t figured out, but >>> mostly I don''t know what to do with the ''/../../../lib'') part. >>> > > That line is there because these examples are in the cucumber > directory tree, and that ensures that the features are run with the > code in that tree (and not an installed cucumber gem). So you should > be able to blow that line away. > > HTH, > David > > > >>> It looks like >>> its trying to locate the source dir, but if so, why not just specify + >>> ''lib''...? After staring at it a bit, I have to admit I don''t grasp what''s >>> going on. >>> >>> Can someone clue me in? >>> >> It has to find the source dir relative to that file. ''/../../../lib'' >> means to go back up the dir structure three levels and then look for >> lib there. >> >> Pat >> _______________________________________________ >> rspec-users mailing list >> rspec-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users >> >> > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > >Thanks to all for the generosity of response to my query, which I only just now noticed. I did figure out all the details in that "$:" line, when I finally had a chance to study it. I did NOT know that the line was optional, though. It''s not documented anywhere that I''ve seen, although I suppose that to those more knowledgeable than I that fact may be obvious. Thanks again! t. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist Bellingham, Washington, U.S.A: (360) 920-1226 << tc at tomcloyd.com >> (email) << TomCloyd.com >> (website) << sleightmind.wordpress.com >> (mental health weblog) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tom Cloyd wrote:> > > I did NOT know that the line was optional, though. It''s not documented > anywhere that I''ve seen, although I suppose that to those more > knowledgeable than I that fact may be obvious.My experience is that, while copious, Ruby documentation suffers from excessive terseness of expression. It is almost as if the brevity of Ruby code influences the writers'' ability to express themselves in English. If you have not done so already then I suggest that you obtain a couple of books on Ruby. Two that I have found extremely well written and valuable are: The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming by Hal Fulton (2006); and Ruby for Rails: Ruby Techniques for Rails Developers by David Black (2006). Despite its title, Ruby for Rails is an expansive look at Ruby with the Rails framework providing an example of how Ruby is meant to be used (and sometimes misused). The Ruby canon of course is the pickaxe book, now revised for Ruby 1.9/2.0. You would find the second edition very useful. Programming Ruby: The Pragmatic Programmers'' Guide, Second Edition by Fowler, Hunt and Thomas (2005) Myself, I prefer David Black''s book to all the rest. His work is perhaps the best written textbook that I have ever encountered. -- Posted via http://www.ruby-forum.com/.