rails-app-installer 0.1.3 → 0.1.4
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.
- data/examples/installer +1 -1
- data/examples/typo +1 -1
- data/lib/rails-installer.rb +96 -8
- data/lib/rails-installer/databases.rb +5 -3
- metadata +1 -1
data/examples/installer
CHANGED
data/examples/typo
CHANGED
data/lib/rails-installer.rb
CHANGED
@@ -9,17 +9,30 @@ require 'rails-installer/web-servers'
|
|
9
9
|
require 'rails-installer/commands'
|
10
10
|
|
11
11
|
#
|
12
|
+
# = Rails Application Installer
|
12
13
|
# An installer for Rails applications.
|
13
14
|
#
|
14
15
|
# The Rails Application Installer is designed to make it easy for end-users to
|
15
16
|
# install open-source Rails apps with a minimum amount of effort. When built
|
16
17
|
# properly, all the user needs to do is run:
|
17
18
|
#
|
18
|
-
# $ gem install my_app
|
19
|
+
# $ sudo gem install my_app
|
19
20
|
# $ my_app install /some/path
|
20
21
|
#
|
21
|
-
#
|
22
|
-
#
|
22
|
+
# Users who need to install your .gem but don't have the right permissions can
|
23
|
+
# do this instead:
|
24
|
+
#
|
25
|
+
# $ export GEM_PATH=~/gems
|
26
|
+
# $ gem install -i ~gems my_app
|
27
|
+
# $ ~gems/bin/my_app install /some/path
|
28
|
+
#
|
29
|
+
# == Adding the installer to your application
|
30
|
+
#
|
31
|
+
# (This example assumes that your program is called 'my_app'. Change this to
|
32
|
+
# match your application's actual name)
|
33
|
+
#
|
34
|
+
# First, create a small driver program and put it into bin/my_app.
|
35
|
+
# Here's a minimal example:
|
23
36
|
#
|
24
37
|
# #!/usr/bin/env ruby
|
25
38
|
#
|
@@ -27,9 +40,9 @@ require 'rails-installer/commands'
|
|
27
40
|
# require 'rails-installer'
|
28
41
|
#
|
29
42
|
# class AppInstaller < RailsInstaller
|
30
|
-
# application_name '
|
43
|
+
# application_name 'my_app'
|
31
44
|
# support_location 'our shiny website'
|
32
|
-
# rails_version '1.1.
|
45
|
+
# rails_version '1.1.6'
|
33
46
|
# end
|
34
47
|
#
|
35
48
|
# # Installer program
|
@@ -41,9 +54,84 @@ require 'rails-installer/commands'
|
|
41
54
|
# end
|
42
55
|
# app.execute_command(*ARGV)
|
43
56
|
#
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
57
|
+
# This is a simple example; you can extend the installer to add new commands and
|
58
|
+
# install steps. See the examples/ directory for more complex examples.
|
59
|
+
#
|
60
|
+
# Second, you'll need some schema files in db/schema.*.sql. The schema_generator
|
61
|
+
# plugin can generate these automatically from your migrations:
|
62
|
+
#
|
63
|
+
# $ sudo gem install schema_generator
|
64
|
+
# $ ./script/generate schemas
|
65
|
+
# $ svn add db/schema.*.sql
|
66
|
+
# $ svn add db/schema_version
|
67
|
+
#
|
68
|
+
# Third, build a .gem file. Make sure that it depends on the rails-app-installer
|
69
|
+
# GEM. Make sure that the generated schema files and the installer that you put in
|
70
|
+
# bin/ are included in your .gem, and the gem knows that bin/my_app is supposed to
|
71
|
+
# be executable. Here's an example from Typo's .gemspec. This may be more complex
|
72
|
+
# then you need.
|
73
|
+
#
|
74
|
+
# $:.unshift '../lib'
|
75
|
+
# require 'rubygems'
|
76
|
+
# require 'rake'
|
77
|
+
#
|
78
|
+
# spec = Gem::Specification.new do |s|
|
79
|
+
# s.name = "typo"
|
80
|
+
# s.version = "4.0.2"
|
81
|
+
# s.summary = "Modern weblog engine."
|
82
|
+
# s.has_rdoc = false
|
83
|
+
#
|
84
|
+
# s.files = Dir.glob('**/*', File::FNM_DOTMATCH).reject do |f|
|
85
|
+
# [ /\.$/, /config\/database.yml$/, /config\/database.yml-/,
|
86
|
+
# /database\.sqlite/,
|
87
|
+
# /\.log$/, /^pkg/, /\.svn/, /^vendor\/rails/,
|
88
|
+
# /^public\/(files|xml|articles|pages|index.html)/,
|
89
|
+
# /^public\/(stylesheets|javascripts|images)\/theme/, /\~$/,
|
90
|
+
# /\/\._/, /\/#/ ].any? {|regex| f =~ regex }
|
91
|
+
# end
|
92
|
+
# s.require_path = '.'
|
93
|
+
# s.author = "Tobias Luetke"
|
94
|
+
# s.email = "tobi@leetsoft.com"
|
95
|
+
# s.homepage = "http://www.typosphere.org"
|
96
|
+
# s.rubyforge_project = "typo"
|
97
|
+
# s.platform = Gem::Platform::RUBY
|
98
|
+
# s.executables = ['typo']
|
99
|
+
#
|
100
|
+
# s.add_dependency("rails", "= 1.1.6")
|
101
|
+
# s.add_dependency("rails-app-installer", ">= 0.1.2")
|
102
|
+
# end
|
103
|
+
#
|
104
|
+
# if $0==__FILE__
|
105
|
+
# Gem::manage_gems
|
106
|
+
# Gem::Builder.new(spec).build
|
107
|
+
# end
|
108
|
+
#
|
109
|
+
# == Using your .gem
|
110
|
+
#
|
111
|
+
# You can test your new gem by running 'sudo gem install ./my_app-1.0.0.gem'. Once you're
|
112
|
+
# happy with it, upload it to Rubyforge and it'll automatically be added to the master
|
113
|
+
# gem index.
|
114
|
+
#
|
115
|
+
# Users should be able to download and install it using the commands at the top of this
|
116
|
+
# document.
|
117
|
+
#
|
118
|
+
# === Non-standard install options
|
119
|
+
#
|
120
|
+
# By default, the installer uses SQLite3 and Mongrel when installing your app.
|
121
|
+
# The user can override this at install time with some flags. Examples:
|
122
|
+
#
|
123
|
+
# # install using SQLite3 and Mongrel
|
124
|
+
# $ my_app install /some/path
|
125
|
+
#
|
126
|
+
# # install using MySQL and Mongrel
|
127
|
+
# $ my_app install /some/path database=mysql db_user=my_app db_name=my_app db_host=localhost db_password=password
|
128
|
+
#
|
129
|
+
# # install using PostgreSQL and Mongrel
|
130
|
+
# $ my_app install /some/path database=postgresql db_user=my_app db_name=my_app db_host=localhost db_password=password
|
131
|
+
#
|
132
|
+
# # install using SQLite3 and mongrel_cluster
|
133
|
+
# $ my_app install /some/path web-server=mongrel_cluster threads=4
|
134
|
+
#
|
47
135
|
class RailsInstaller
|
48
136
|
include FileUtils
|
49
137
|
attr_accessor :install_directory, :source_directory, :config
|
@@ -243,7 +243,7 @@ class RailsInstaller
|
|
243
243
|
<<: *login
|
244
244
|
|
245
245
|
test:
|
246
|
-
database: #{db_name installer}
|
246
|
+
database: #{db_name installer}_test
|
247
247
|
<<: *login
|
248
248
|
}
|
249
249
|
end
|
@@ -251,8 +251,10 @@ class RailsInstaller
|
|
251
251
|
# Create a MySQL database.
|
252
252
|
def self.create_database(installer)
|
253
253
|
installer.message "Creating MySQL database"
|
254
|
-
|
255
|
-
|
254
|
+
base_command = "mysql -u #{db_user installer} "
|
255
|
+
base_command << "-p#{installer.config['db_password']}" if installer.config['db_password']
|
256
|
+
system("#{base_command} -e 'create database #{db_name installer}'")
|
257
|
+
system("#{base_command} -e 'create database #{db_name installer}_test'")
|
256
258
|
end
|
257
259
|
end
|
258
260
|
end
|