I checked through the list archives I see that capistrano requires  
the usage of a "real" SCM. I have a very specific requirement where I  
need to deploy the contents of a directory to a set of servers. Based  
on the advice given in those earlier threads, I am writing a custom  
SCM to mimic a "cp" so I can leverage the existing code in the  
framework to handle the remainder of the deployment.

However, I am having a problem getting my custom class to load. For  
the sake of simplicity early on, I am putting the code into ~/.caprc.

The approach I took is I subclassed Capistrano::Deploy::SCM::Base and  
overrode the +checkout+ method. When I run 'cap -T' just to verify  
capistrano is still working, I get a NameError. Here it is:

/Users/cremes/.caprc:8:in `load': uninitialized constant #<Class: 
0x14b55f4>::Capistrano::Deploy::SCM::Base (NameError)
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/configuration/loading.rb:173:in `load_from_file'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/configuration/loading.rb:89:in `load'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/configuration/loading.rb:86:in `load'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/configuration/loading.rb:86:in `each'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/configuration/loading.rb:86:in `load'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/cli/execute.rb:60:in `load_recipes'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/cli/execute.rb:28:in `execute!'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
lib/capistrano/cli/execute.rb:14:in `execute'
         from /Users/cremes/lib/ruby/gems/1.8/gems/capistrano-2.1.0/ 
bin/cap:4
         from /Users/cremes/bin/cap:16:in `load'
         from /Users/cremes/bin/cap:16

Here is the code it is complaining about (the entire contents  
of .caprc):

module Capistrano
   module Deploy
     module SCM

       # Implements the Capistrano SCM interface for using a plain old
       # directory to do deployment. It fakes out all the usual SCM  
commands
       # so we can use the other infrastructure to copy & deploy a  
tarball
       class Directory < Base
         # Sets the default command name for this SCM. Users may  
override this
         # by setting the :scm_command variable.
         default_command "cp"

         # Returns the command that will check out the given revision  
to the
         # given destination.
         def checkout(revision, destination)
           switches = '-Rp'
           scm :cp, verbose, switches, repository, destination
         end

       end
     end #SCM
   end #Deploy
end #Capistrano

I know I am getting this because of a file load ordering issue, but I  
don't know where I should place this code. What is the recommended  
approach for creating custom SCMs?

Environment:
OSX 10.4.10
ruby 1.8.6 from macports
capistrano-2.1.0 gem

--~--~---------~--~----~------------~-------~--~----~
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/capistrano
-~----------~----~----~----~------~----~------~--~---

Reply via email to