Class: Closure
- Inherits:
-
Object
- Object
- Closure
- Defined in:
- lib/closure.rb,
lib/closure/goog.rb,
lib/closure/server.rb,
lib/closure/script.rb,
lib/closure/version.rb,
lib/closure/sources.rb,
lib/closure/compiler.rb,
lib/closure/beanshell.rb,
lib/closure/templates.rb,
lib/closure/middleware.rb,
lib/closure/file_response.rb,
lib/closure/show_exceptions.rb
Overview
Closure tools may be called directly, run as a stand-alone server, installed as middleware into a framework like Rails, or adapted to anything with a rack environment.
Defined Under Namespace
Classes: BeanShell, Compiler, FileResponse, Goog, Middleware, Script, Server, ShowExceptions, Sources, Templates
Constant Summary
- BUILT_INS =
Scripts that are distributed with the gem. These will help get you started quickly.
{ :soy => File.join(base_path, 'closure-templates'), :docs => File.join(base_path, 'docs') }
- VERSION =
"1.5.6"
Class Method Summary (collapse)
-
+ add_source(directory, path)
Easy config.
-
+ (String) base_path
Filesystem location of the Closure Script install.
-
+ (OpenStruct) config
Set these before the rack server is called for the first time.
-
+ exclude(directory)
Easy config.
-
+ (Array) sources
This is a global instance of sources, configured with Closure.add_source() and used for Script::Middleware by default.
-
+ welcome
Run the welcome server.
Class Method Details
+ add_source(directory, path) + add_source(built_in, path)
Easy config. This adds to the global instance of sources and supports using the BUILT_INS.
58 59 60 61 62 63 64 65 66 |
# File 'lib/closure.rb', line 58 def self.add_source(directory, path) if directory.kind_of? Symbol dir = BUILT_INS[directory] raise "Unknown built-in: #{directory}" unless dir directory = dir end raise Errno::ENOENT, File.(directory, Dir.pwd) unless File.directory? directory sources.add directory, path end |
+ (String) base_path
Filesystem location of the Closure Script install. Typically, where the gem was installed. This is mainly used internally but may be useful for experimental configurations.
36 37 38 |
# File 'lib/closure.rb', line 36 def self.base_path @@base_path ||= File.(File.join(File.dirname(__FILE__), '..')) end |
+ (OpenStruct) config
Set these before the rack server is called for the first time.
Attributes:
-
(String) java – default: “java” – Your Java executable. Not used under JRuby.
-
(String) compiler_jar – A compiler.jar to use instead of the packaged one.
-
(String) soy_js_jar – A SoyToJsSrcCompiler.jar to use instead of the packaged one.
-
(Array) engines – Add new script engines here.
123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/closure.rb', line 123 def self.config return @@config if defined? @@config @@config = OpenStruct.new({ :compiler_jar => File.join(base_path, 'closure-compiler', 'compiler.jar'), :soy_js_jar => File.join(base_path, 'closure-templates', 'SoyToJsSrcCompiler.jar'), :engines => {} }) if !defined? JRUBY_VERSION @@config.java = 'java' end @@config end |
+ exclude(directory)
Easy config. Exclude a subdirectories of sources. This is typically used to exclude the build folder for whitespace builds (which contain “goog.provide”).
72 73 74 75 |
# File 'lib/closure.rb', line 72 def self.exclude(directory) # no check if exists, build may create later sources.add directory, nil end |
+ (Array) sources
This is a global instance of sources, configured with Closure.add_source() and used for Script::Middleware by default. Path and directory pairs configured with Closure.add_source().
82 83 84 |
# File 'lib/closure.rb', line 82 def self.sources @@sources ||= Sources.new end |
+ welcome
Run the welcome server. Handy for gem users.
139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/closure.rb', line 139 def self.welcome raise 'Use rackup, config.ru already exists.' if File.exist? 'config.ru' gem 'rack', '>= 1.1.0' require 'rack' ENV["CLOSURE_SCRIPT_WELCOME"] = 'true' server = Rack::Server.new :config => File.join(base_path, 'scripts', 'config.ru') # Make a phony request so options[:Port] gets set from config.ru Rack::MockRequest.new(server.app).request port = server.[:Port] || server.[:Port] print "Closure Script Welcome Server: http://localhost:#{port}/\n" server.start end |