capgem 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,33 @@
1
+ require 'capgem/gembuilder'
2
+ require 'capgem/utils'
3
+
4
+ # =======================================================================
5
+ # Extension to Capistrano which builds your Rails application to a Gem.
6
+ # =======================================================================
7
+
8
+ Capistrano.configuration(:must_exist).load do
9
+ desc "A task for packaging your Rails app as a Gem"
10
+ task :pack do
11
+ Capgem::Utils.create_directories
12
+
13
+ server_name = (server_name || :mongrel).to_s
14
+ server_class = server_name.capitalize
15
+
16
+ begin
17
+ require "capgem/servers/#{server_name}"
18
+ server = Capgem::Servers.const_get(server_name.capitalize).new(application)
19
+ #server = Servers::Mongrel.new(application)
20
+ server.create_runscripts
21
+ rescue
22
+ puts "Unable to create runscripts"
23
+ end
24
+
25
+ gem_builder = Capgem::GemBuilder.new(application, server)
26
+ gem_builder.author = author if respond_to?(:author)
27
+ gem_builder.email = email if respond_to?(:email)
28
+ gem_builder.summary = summary if respond_to?(:summary)
29
+ gem_builder.description = description if respond_to?(:description)
30
+
31
+ gem_builder.build
32
+ end
33
+ end
@@ -0,0 +1,64 @@
1
+ require 'rubygems'
2
+ require 'rake/gempackagetask'
3
+
4
+ module Capgem
5
+ class GemBuilder # The GemBuilder handles the construction of the Gem from the Rails app
6
+
7
+ # The application name
8
+ attr_accessor :application
9
+
10
+ # The optional application version number (format x.x.x)
11
+ attr_accessor :version
12
+
13
+ # Name of the Gem author
14
+ attr_accessor :author
15
+
16
+ # Email of the Gem author
17
+ attr_accessor :email
18
+
19
+ # Summary of the Gem
20
+ attr_accessor :summary
21
+
22
+ # Description of the Gem
23
+ attr_accessor :description
24
+
25
+ # Initialize the GemBuilder
26
+ # +application: The application name
27
+ # version:
28
+ def initialize(application, server, version=nil)
29
+ @application = application
30
+ @server = server
31
+ @version = version
32
+ end
33
+
34
+ # Return the version used for the Gem. If the version attribute is set then this
35
+ # method will return that value, otherwise it will return the current SCM version
36
+ def version
37
+ return @version || '0.1'
38
+ end
39
+
40
+ # Build the gem
41
+ def build
42
+ Gem::manage_gems
43
+ spec = Gem::Specification.new do |s|
44
+ s.platform = Gem::Platform::RUBY
45
+ s.name = @application
46
+ s.version = version
47
+ s.author = @author || 'Your Name Here'
48
+ s.email = @email || 'your.email@your.company'
49
+ s.summary = @summary || ''
50
+ s.files = FileList['app/**/*','bin/*','components/**/*','config/**/*','db/**/*',
51
+ 'lib/**/*','log/README','public/**/*','Rakefile','script/**/*','test/**/*','vendor/**/*'].to_a
52
+ s.executables << "start-#{@application}"
53
+ s.executables << "stop-#{@application}"
54
+ @server.dependencies.each do |name, version|
55
+ s.add_dependency(name, version)
56
+ s.requirements << "#{name} version #{version}"
57
+ end
58
+ end
59
+
60
+ # Build the Gem
61
+ Gem::Builder::new(spec).build
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,34 @@
1
+ module Capgem
2
+ module Servers
3
+ class Mongrel
4
+ # Initialize the Mongrel supporter
5
+ # +application: The name of the application
6
+ def initialize(application)
7
+ @application = application
8
+ end
9
+
10
+ # Create the runscripts for starting and stopping Mongrel
11
+ def create_runscripts
12
+ posix_runscripts
13
+ end
14
+
15
+ def dependencies
16
+ {'mongrel', '>=0.0.0'}
17
+ end
18
+
19
+ private
20
+ # Create the POSIX runscripts
21
+ def posix_runscripts
22
+ puts "Building posix runscripts for app #{@application}"
23
+ File.open("bin/start-#{@application}", 'w') do |f|
24
+ f.puts %q{root_path = File.join(File.dirname(__FILE__), '..')}
25
+ f.puts '`mongrel_rails start -d -c #{root_path}`'
26
+ end
27
+ File.open("bin/stop-#{@application}", 'w') do |f|
28
+ f.puts %q{root_path = File.join(File.dirname(__FILE__), '..')}
29
+ f.puts '`mongrel_rails stop -c #{root_path}`'
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,13 @@
1
+ module Capgem
2
+ class Utils
3
+ # Create the required directories (bin and log) and put a README in the log
4
+ # directory
5
+ def self.create_directories
6
+ mkdir 'bin' unless File.exists?('bin')
7
+ mkdir 'log' unless File.exists?('log')
8
+ File.open('log/README') do |f|
9
+ puts "Log files will go here"
10
+ end
11
+ end
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: capgem
5
+ version: !ruby/object:Gem::Version
6
+ version: "0.1"
7
+ date: 2006-06-26 00:00:00 -04:00
8
+ summary: Capistrano extension which builds a gem.
9
+ require_paths:
10
+ - lib
11
+ email:
12
+ homepage:
13
+ rubyforge_project:
14
+ description: Capgem is an extension to Capistrano which builds your Rails app to a gem which can be installed anywhere.
15
+ autorequire: capgem
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ authors: []
29
+
30
+ files:
31
+ - lib/capgem
32
+ - lib/capgem.rb
33
+ - lib/capgem/gembuilder.rb
34
+ - lib/capgem/servers
35
+ - lib/capgem/utils.rb
36
+ - lib/capgem/servers/mongrel.rb
37
+ test_files: []
38
+
39
+ rdoc_options: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ executables: []
44
+
45
+ extensions: []
46
+
47
+ requirements:
48
+ - none
49
+ dependencies: []
50
+