Instiki: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
I created a setup script to help me get Instiki running from source. So far I have it working with | I created a setup script to help me get Instiki running from source. So far I have it working with SQLite, but I'd like to get mysql working as wel. | ||
<pre> | <pre> | ||
Revision as of 14:49, 13 June 2006
I created a setup script to help me get Instiki running from source. So far I have it working with SQLite, but I'd like to get mysql working as wel.
#!/usr/bin/env ruby
require 'stringio'
require 'ftools'
require 'find'
def get(prompt)
print prompt
res = readline.chomp
throw :quit_requested if res == "!"
res
end
def choose(prompt, list)
(1..list.length).each {|x| puts "#{x}) #{list[x-1]}"}
i = get(prompt + " (1-#{list.length}): ")
list[i.to_i - 1]
end
def show_configs(configs, io)
configs.each do |name,settings|
io.puts "#{name}:"
settings.each {|k,v| io.puts " #{k}: #{v}"}
io.puts
end
end
puts "This script will help you configure your database.yml file."
adapters = []
`which mysql`
if $? == 0 then
adapters << "mysql"
end
# SQLite seems to return 1 for it's normal return code
`which sqlite3`
if $? == 0 then
adapters << "sqlite3"
else
puts $?
end
adapter = choose('Select a database adapter', adapters)
configs = { 'development' => {}, 'test' => {}, 'production' => {}}
configs.each {|k,v| v['adapter'] = adapter}
case adapter
when "sqlite3"
configs.each {|k,v| v['database'] = "db/#{k}.db.sqlite3"}
end
str = StringIO.new()
show_configs(configs, str)
puts "Created database config:"
puts str.string
if File.file?('config/database.yml') then
if get("Would you like to replace database.yml with the above config? (Y/n) ").downcase == 'n' then
puts "Cancelled"
exit 1
end
# backup the svn version
if !File.file?('config/database.yml.old')
File.move("config/database.yml", "config/database.yml.old", true)
end
end
File.open("config/database.yml", "w") do |file|
show_configs(configs, file)
end
case adapter
when "sqlite3"
Find.find('db') { |f| File.delete(f) if f =~ /.*\.db/ }
end
configs.each do |env,k|
system("rake migrate RAILS_ENV=#{env}")
end