Where do I start?

Ok, in line with my last post - I have the original Agile book, and
I’ve been googling tutorials and whatnot. From what I can see, the
ONLamp.com tutorial seems popular (Rolling with Ruby) - but it is 2
years old as well. I have the Rails in 4 days PDF downloaded - that
seems possibly more current.

What is the best way to get started? I remember very little so i will
be starting from scratch again. I read why’s poignant guide back then,
I’m not sure if I need to rehash that.

I also downloaded Bitnami Rubystack, which seems to be a nice all in
one install. Some of the other stuff seems out of development - is
that a good way to get the environment up and running?

Pixelmech wrote:

Ok, in line with my last post - I have the original Agile book, and
I’ve been googling tutorials and whatnot. From what I can see, the
ONLamp.com tutorial seems popular (Rolling with Ruby) - but it is 2
years old as well. I have the Rails in 4 days PDF downloaded - that
seems possibly more current.

What is the best way to get started? I remember very little so i will
be starting from scratch again. I read why’s poignant guide back then,
I’m not sure if I need to rehash that.

I also downloaded Bitnami Rubystack, which seems to be a nice all in
one install. Some of the other stuff seems out of development - is
that a good way to get the environment up and running?

Well, on Windows, it is Instant Rails. On Ubuntu, there is a wiki that
seems to work. If there is another distro, this looks like a good idea
if the depenencies are all there? or … are you on a Mac?

:slight_smile:

I don’t have a mac. i want a mac. i need a mac. but ubuntu is cool.

Instant Rails is no longer being developed - I hate to jump in to
something that is going away. That is why I grabbed RubyStack. I’m on
a PC - I too need a mac, but alas, it’s the PC for now.

On Nov 28, 12:50 pm, Trent B. [email protected]

On Nov 28, 2007 10:38 AM, Pixelmech [email protected] wrote:

Ok, in line with my last post - I have the original Agile book…

heh. I found myself in a similar situation – bought the original book
last year for a project that got put aside, and, getting back to it this
year, decided the changes since then were substantial.

I’d recommend getting the second edition.

FWIW, and best of luck!

Hassan S. ------------------------ [email protected]

Sounds good… what about this ONLamp tutorial…

Since it’s two years old… is it still a good one?

Frankly, I found the new book to be pretty weak as a training manual.
I went all the way through, and then went hunting for tutorials. It
probably would have been easier if I wasn’t starting with a poorly
designed distributed MS SQL Server database. The ones you mentioned
were all I found. I don’t recall any really major problems with the
tutorials.

I know that InstaRails is no longer supported. I would advise getting
it anyway. Three gochas:

  1. Run gem update immediately. If you have firewall troubles, you
    want to find out right away anyway. (I’m downloading all gems & doing
    local installs)
  2. Instarails insists that it knows where your projects are. This is
    very inconvenient for the way I use subversion, so I just pop a
    console & cd.
  3. Rails itself is really, really stupid about subversion. Do NOT do
    a rails -c if you value your sanity.

I like to have a repo image on my local drive. YMMV:

mkdir TEMP_DIR
cd TEMP_DIR
mkdir branches
mkdir tags
cd …
svn import PROJECT_URL
cd …
svn checkout PROJECT_URL PROJECT_NAME
cd PROJECT_NAME
rails PROJECT_NAME
mov PROJECT_NAME trunk
add_svn trunk
svn commit -m “Initial rails commit”

Here is my (ugly) add_svn script. The most contentious decision is
probably about whether or not you ignore database.yml. This is
discussed in the book.

#!/usr/bin/ruby

add_svn by Nathan Zook

usage: add_svn [directory]

Adds rails files with reasonable ignore properties

def add_excepting(base, excludes)
excludes.each do |dir, controls|
next unless dir
reldir = “#{base}/#{dir}”
svn(“add --non-recursive #{reldir}”)
if controls.is_a? Hash
add_excepting(reldir, controls)
else
process(reldir, controls)
end
end
if excludes.has_key?(nil)
process(base, excludes[nil])
end
addset (Dir.glob("#{base}/*") - excludes.keys.select{|file|
file}.collect{|file| “#{base}/#{file}”})
end

def process(reldir, controls)
ignore = []
controls.each do |pat|
if exec?(pat)
callout(reldir, exec?(pat))
elsif backup?(pat)
ignore << backup(reldir, backup?(pat))
else
ignore << pat
end
end
svn(“propset svn:ignore “#{ignore.join(”\n”)}" #{reldir}") unless
ignore.empty?
files = Dir.glob("#{reldir}/") + Dir.glob("#{reldir}/.") -
%w(.svn . …).collect{|file| “#{reldir}/#{file}”}
addset ignore.inject(files) { |files, pattern|
files - Dir.glob("#{reldir}/#{pattern}")
}
end

def addset(files)
svn(“add #{files.join(’ ')}”) unless files.empty?
end

def exec?(directive)
match_and_strip( /\A /, directive)
end

def backup?(directive)
match_and_strip(/\A:backup /, directive)
end

def match_and_strip(rexp, directive)
if rexp.match(directive)
directive.sub(rexp, ‘’)
else
nil
end
end

def backup(dir, file)
File.rename("#{dir}/#{file}", “#{dir}/#{file}.example”)
file
end

def svn(args)
callout(".", “svn #{args}”)
end

def callout(dir, cmd)
cwd = Dir.getwd
Dir.chdir dir
system(cmd) or raise “’#{cmd}’ in directory #{dir} went bang: #{$?}”
Dir.chdir cwd
end

root = ARGV.shift || ‘.’
Dir.chdir root
cwd = Dir.getwd
Dir.chdir ‘…’
base = File.basename(cwd)

if ! File.directory? “#{base}/.svn”
svn(“add #{base} -N”)
end

add_excepting( base, {
‘log’ => [’.log’],
‘db’ => [‘schema.rb’, ‘development_structure.sql’, '
.rb’],
‘doc’ => [’.doc’],
‘tmp’ => {
nil => [’
’],
‘sessions’ => [’’],
‘sockets’ => [’
’],
‘cache’ => [’’],
‘pids’ => [’
’],
},
‘config’ => [’:backup database.yml’],
‘public’ => [’:backup dispatch.rb’, ‘:backup dispatch.cgi’, ‘:backup
dispatch.fcgi’]
})