Class: DatabaseYML
- Inherits:
-
Object
- Object
- DatabaseYML
- Defined in:
- lib/database_yml.rb
Constant Summary collapse
- SCRIPT_RAILS =
File.join('script', 'rails')
- DRIVERS =
%W(mysql postgresql sqlite3)
- TEMPLATES_DIR =
File.join(File.(File.dirname(__FILE__)), "templates")
Class Method Summary collapse
- .in_rails_application? ⇒ Boolean
- .in_rails_application_subdirectory?(path = Pathname.new(Dir.pwd)) ⇒ Boolean
Instance Method Summary collapse
- #create! ⇒ Object
- #generate_database_yml! ⇒ Object
-
#initialize(database) ⇒ DatabaseYML
constructor
A new instance of DatabaseYML.
Constructor Details
#initialize(database) ⇒ DatabaseYML
Returns a new instance of DatabaseYML.
13 14 15 |
# File 'lib/database_yml.rb', line 13 def initialize(database) @database = database || 'sqlite3' end |
Class Method Details
.in_rails_application? ⇒ Boolean
38 39 40 |
# File 'lib/database_yml.rb', line 38 def self.in_rails_application? File.exists?(SCRIPT_RAILS) end |
.in_rails_application_subdirectory?(path = Pathname.new(Dir.pwd)) ⇒ Boolean
42 43 44 |
# File 'lib/database_yml.rb', line 42 def self.in_rails_application_subdirectory?(path = Pathname.new(Dir.pwd)) File.exists?(File.join(path, SCRIPT_RAILS)) || !path.root? && in_rails_application_subdirectory?(path.parent) end |
Instance Method Details
#create! ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/database_yml.rb', line 17 def create! return unless DRIVERS.include? @database cwd = Dir.pwd return unless self.class.in_rails_application? || self.class.in_rails_application_subdirectory? if self.class.in_rails_application? generate_database_yml! return end Dir.chdir("..") do # Recurse in a chdir block: if the search fails we want to be sure # the application is generated in the original working directory. create! unless cwd == Dir.pwd end rescue SystemCallError # could not chdir, no problem just return end |
#generate_database_yml! ⇒ Object
46 47 48 49 |
# File 'lib/database_yml.rb', line 46 def generate_database_yml! FileUtils.cp(File.join(TEMPLATES_DIR, @database), File.join(Dir.pwd, "config", "database.yml")) puts "database.yml created for #{@database}" end |