56 lines
2.0 KiB
Ruby
56 lines
2.0 KiB
Ruby
module Compass
|
|
module RailsHelper
|
|
def generate_rails_app_directories(name)
|
|
Dir.mkdir name
|
|
Dir.mkdir File.join(name, "config")
|
|
Dir.mkdir File.join(name, "config", "initializers")
|
|
Dir.mkdir File.join(name, "tmp")
|
|
end
|
|
|
|
# Generate a rails application without polluting our current set of requires
|
|
# with the rails libraries. This will allow testing against multiple versions of rails
|
|
# by manipulating the load path.
|
|
def generate_rails_app(name, dir = nil)
|
|
if pid = fork
|
|
Process.wait(pid)
|
|
if $?.exitstatus == 2
|
|
raise LoadError, "Couldn't load rails"
|
|
elsif $?.exitstatus != 0
|
|
raise "Failed to generate rails application."
|
|
end
|
|
else
|
|
begin
|
|
require 'action_pack/version'
|
|
if ActionPack::VERSION::MAJOR >= 3
|
|
require 'rails/generators'
|
|
require 'rails/generators/rails/app/app_generator'
|
|
require 'mocha'
|
|
dir ||= File.join(File.expand_path('../../', __FILE__))
|
|
args = [File.join(dir, name), '-q', '-f', '--skip-bundle', '--skip-gemfile']
|
|
|
|
#stub this so you can generate more apps
|
|
Rails::Generators::AppGenerator.any_instance.stubs(:valid_const?).returns(true)
|
|
Rails::Generators::AppGenerator.start(args, {:destination_root => dir})
|
|
|
|
else
|
|
require 'rails/version'
|
|
require 'rails_generator'
|
|
require 'rails_generator/scripts/generate'
|
|
Rails::Generator::Base.use_application_sources!
|
|
capture_output do
|
|
Rails::Generator::Base.logger = Rails::Generator::SimpleLogger.new $stdout
|
|
Rails::Generator::Scripts::Generate.new.run([name], :generator => 'app')
|
|
end
|
|
end
|
|
rescue LoadError
|
|
Kernel.exit!(2)
|
|
rescue => e
|
|
$stderr.puts e
|
|
Kernel.exit!(1)
|
|
end
|
|
Kernel.exit!(0)
|
|
end
|
|
end
|
|
end
|
|
end
|