Class: Warbler::Traits::Rails
- Inherits:
-
Object
- Object
- Warbler::Traits::Rails
show all
- Includes:
- Warbler::Trait
- Defined in:
- lib/warbler/traits/rails.rb
Overview
The Rails trait invokes the Rake environment task and sets up Rails for a war-based project.
Instance Attribute Summary
#config
Class Method Summary
collapse
Instance Method Summary
collapse
#add_init_load_path, #add_main_rb, included, #initialize, #jruby_jars, #update_archive, #update_gem_path
Class Method Details
.detect? ⇒ Boolean
14
15
16
|
# File 'lib/warbler/traits/rails.rb', line 14
def self.detect?
File.exist?('config/environment.rb')
end
|
.requirements ⇒ Object
18
19
20
|
# File 'lib/warbler/traits/rails.rb', line 18
def self.requirements
[ Traits::War ]
end
|
Instance Method Details
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/warbler/traits/rails.rb', line 46
def after_configure
config.init_contents << "#{config.warbler_templates}/rails.erb"
if config.webxml.jruby.min.runtimes.is_a?(OpenStruct) &&
config.webxml.jruby.max.runtimes.is_a?(OpenStruct) if rails_major_version(0) >= 4 || threadsafe_enabled?
config.webxml.jruby.min.runtimes = 1
config.webxml.jruby.max.runtimes = 1
end
end
config.includes += FileList["public/assets/.sprockets-manifest-*.json"].existing
config.includes += FileList["public/assets/manifest-*.json"].existing
config.includes += FileList["public/assets/manifest.yml"].existing
end
|
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/warbler/traits/rails.rb', line 22
def before_configure
config.jar_name = default_app_name
config.webxml.rails.env = ENV['RAILS_ENV'] || 'production'
config.pathmaps.public_html << "%{packs/(manifest.*),WEB-INF/public/packs/\\1}p"
return unless Warbler.framework_detection
return false unless task = Warbler.project_application.lookup('environment')
task.invoke rescue nil
return false unless defined?(::Rails)
config.dirs << 'tmp' if File.directory?('tmp')
config.webxml.booter = :rails
unless (defined?(::Rails.vendor_rails?) && ::Rails.vendor_rails?) || File.directory?('vendor/rails')
config.gems['rails'] = ::Rails::VERSION::STRING unless Bundler.detect?
end
if defined?(::Rails.configuration.gems)
::Rails.configuration.gems.each do |g|
config.gems << Gem::Dependency.new(g.name, g.requirement) if Dir["vendor/gems/#{g.name}*"].empty?
end
end
config.script_files << "#{config.warbler_scripts}/rails.rb"
end
|
#default_app_name ⇒ Object
62
63
64
|
# File 'lib/warbler/traits/rails.rb', line 62
def default_app_name
File.basename(File.expand_path(defined?(::Rails.root) ? ::Rails.root : (defined?(RAILS_ROOT) ? RAILS_ROOT : Dir.getwd)))
end
|
#rails_major_version(default = 0) ⇒ Object
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/warbler/traits/rails.rb', line 77
def rails_major_version(default = 0)
begin
File.open("#{ENV['BUNDLE_GEMFILE'] || 'Gemfile'}.lock") do |file|
file.each_line do |line|
match = line.match( /^\s*rails\s\(\s*(\d)\.\d+\.\d+.*\)$/ )
return match[1].to_i if match
end
end
rescue
end
default
end
|
#threadsafe_enabled? ⇒ Boolean
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/warbler/traits/rails.rb', line 66
def threadsafe_enabled?
rails_env = config.webxml.rails.env
begin
unless IO.readlines("config/environments/#{rails_env}.rb").grep(/^\s*config\.threadsafe!/).empty? &&
IO.readlines("config/environment.rb").grep(/^\s*config\.threadsafe!/).empty?
return true
end
rescue
end
end
|