+#
+# Locale fallbacks always fall back to
+#
+# * all parent locales of a given locale (e.g. :es for :"es-MX") first,
+# * the current default locales and all of their parents second
+#
+# The default locales are set to [I18n.default_locale] by default but can be
+# set to something else.
+#
+# One can additionally add any number of additional fallback locales manually.
+# These will be added before the default locales to the fallback chain. For
+# example:
+#
+# # using the default locale as default fallback locale
+#
+# I18n.default_locale = :"en-US"
+# I18n.fallbacks = I18n::Fallbacks.new(:"de-AT" => :"de-DE")
+# I18n.fallbacks[:"de-AT"] # => [:"de-AT", :"de-DE", :de, :"en-US", :en]
+#
+# # using a custom locale as default fallback locale
+#
+# I18n.fallbacks = I18n::Fallbacks.new(:"en-GB", :"de-AT" => :de, :"de-CH" => :de)
+# I18n.fallbacks[:"de-AT"] # => [:"de-AT", :de, :"en-GB", :en]
+# I18n.fallbacks[:"de-CH"] # => [:"de-CH", :de, :"en-GB", :en]
+#
+# # mapping fallbacks to an existing instance
+#
+# # people speaking Catalan also speak Spanish as spoken in Spain
+# fallbacks = I18n.fallbacks
+# fallbacks.map(:ca => :"es-ES")
+# fallbacks[:ca] # => [:ca, :"es-ES", :es, :"en-US", :en]
+#
+# # people speaking Arabian as spoken in Palestine also speak Hebrew as spoken in Israel
+# fallbacks.map(:"ar-PS" => :"he-IL")
+# fallbacks[:"ar-PS"] # => [:"ar-PS", :ar, :"he-IL", :he, :"en-US", :en]
+# fallbacks[:"ar-EG"] # => [:"ar-EG", :ar, :"en-US", :en]
+#
+# # people speaking Sami as spoken in Finnland also speak Swedish and Finnish as spoken in Finnland
+# fallbacks.map(:sms => [:"se-FI", :"fi-FI"])
+# fallbacks[:sms] # => [:sms, :"se-FI", :se, :"fi-FI", :fi, :"en-US", :en]
+
+module I18n
+ module Locale
+ class Fallbacks < Hash
+ def initialize(*mappings)
+ @map = {}
+ map(mappings.pop) if mappings.last.is_a?(Hash)
+ self.defaults = mappings.empty? ? [I18n.default_locale.to_sym] : mappings
+ end
+
+ def defaults=(defaults)
+ @defaults = defaults.map { |default| compute(default, false) }.flatten
+ end
+ attr_reader :defaults
+
+ def [](locale)
+ raise InvalidLocale.new(locale) if locale.nil?
+ locale = locale.to_sym
+ super || store(locale, compute(locale))
+ end
+
+ def map(mappings)
+ mappings.each do |from, to|
+ from, to = from.to_sym, Array(to)
+ to.each do |to|
+ @map[from] ||= []
+ @map[from] << to.to_sym
+ end
+ end
+ end
+
+ protected
+
+ def compute(tags, include_defaults = true)
+ result = Array(tags).collect do |tag|
+ tags = I18n::Locale::Tag.tag(tag).self_and_parents.map! { |t| t.to_sym }
+ tags.each { |tag| tags += compute(@map[tag]) if @map[tag] }
+ tags
+ end.flatten
+ result.push(*defaults) if include_defaults
+ result.uniq
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag.rb
new file mode 100644
index 00000000000..a640b4465f6
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag.rb
@@ -0,0 +1,28 @@
+# encoding: utf-8
+
+module I18n
+ module Locale
+ module Tag
+ autoload :Parents, 'i18n/locale/tag/parents'
+ autoload :Rfc4646, 'i18n/locale/tag/rfc4646'
+ autoload :Simple, 'i18n/locale/tag/simple'
+
+ class << self
+ # Returns the current locale tag implementation. Defaults to +I18n::Locale::Tag::Simple+.
+ def implementation
+ @@implementation ||= Simple
+ end
+
+ # Sets the current locale tag implementation. Use this to set a different locale tag implementation.
+ def implementation=(implementation)
+ @@implementation = implementation
+ end
+
+ # Factory method for locale tags. Delegates to the current locale tag implementation.
+ def tag(tag)
+ implementation.tag(tag)
+ end
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/parents.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/parents.rb
new file mode 100644
index 00000000000..a0944683844
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/parents.rb
@@ -0,0 +1,24 @@
+# encoding: utf-8
+
+module I18n
+ module Locale
+ module Tag
+ module Parents
+ def parent
+ @parent ||= begin
+ segs = to_a.compact
+ segs.length > 1 ? self.class.tag(*segs[0..(segs.length-2)].join('-')) : nil
+ end
+ end
+
+ def self_and_parents
+ @self_and_parents ||= [self] + parents
+ end
+
+ def parents
+ @parents ||= ([parent] + (parent ? parent.parents : [])).compact
+ end
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/rfc4646.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/rfc4646.rb
new file mode 100644
index 00000000000..c20d35ae727
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/rfc4646.rb
@@ -0,0 +1,76 @@
+# encoding: utf-8
+
+# RFC 4646/47 compliant Locale tag implementation that parses locale tags to
+# subtags such as language, script, region, variant etc.
+#
+# For more information see by http://en.wikipedia.org/wiki/IETF_language_tag
+#
+# Rfc4646::Parser does not implement grandfathered tags.
+
+module I18n
+ module Locale
+ module Tag
+ RFC4646_SUBTAGS = [ :language, :script, :region, :variant, :extension, :privateuse, :grandfathered ]
+ RFC4646_FORMATS = { :language => :downcase, :script => :capitalize, :region => :upcase, :variant => :downcase }
+
+ class Rfc4646 < Struct.new(*RFC4646_SUBTAGS)
+ class << self
+ # Parses the given tag and returns a Tag instance if it is valid.
+ # Returns false if the given tag is not valid according to RFC 4646.
+ def tag(tag)
+ matches = parser.match(tag)
+ new(*matches) if matches
+ end
+
+ def parser
+ @@parser ||= Rfc4646::Parser
+ end
+
+ def parser=(parser)
+ @@parser = parser
+ end
+ end
+
+ include Parents
+
+ RFC4646_FORMATS.each do |name, format|
+ define_method(name) { self[name].send(format) unless self[name].nil? }
+ end
+
+ def to_sym
+ to_s.to_sym
+ end
+
+ def to_s
+ @tag ||= to_a.compact.join("-")
+ end
+
+ def to_a
+ members.collect { |attr| self.send(attr) }
+ end
+
+ module Parser
+ PATTERN = %r{\A(?:
+ ([a-z]{2,3}(?:(?:-[a-z]{3}){0,3})?|[a-z]{4}|[a-z]{5,8}) # language
+ (?:-([a-z]{4}))? # script
+ (?:-([a-z]{2}|\d{3}))? # region
+ (?:-([0-9a-z]{5,8}|\d[0-9a-z]{3}))* # variant
+ (?:-([0-9a-wyz](?:-[0-9a-z]{2,8})+))* # extension
+ (?:-(x(?:-[0-9a-z]{1,8})+))?| # privateuse subtag
+ (x(?:-[0-9a-z]{1,8})+)| # privateuse tag
+ /* ([a-z]{1,3}(?:-[0-9a-z]{2,8}){1,2}) */ # grandfathered
+ )\z}xi
+
+ class << self
+ def match(tag)
+ c = PATTERN.match(tag.to_s).captures
+ c[0..4] << (c[5].nil? ? c[6] : c[5]) << c[7] # TODO c[7] is grandfathered, throw a NotImplemented exception here?
+ rescue
+ false
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/simple.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/simple.rb
new file mode 100644
index 00000000000..0fddb366a60
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/locale/tag/simple.rb
@@ -0,0 +1,41 @@
+# encoding: utf-8
+
+# Simple Locale tag implementation that computes subtags by simply splitting
+# the locale tag at '-' occurences.
+module I18n
+ module Locale
+ module Tag
+ class Simple
+ class << self
+ def tag(tag)
+ new(tag)
+ end
+ end
+
+ include Parents
+
+ attr_reader :tag
+
+ def initialize(*tag)
+ @tag = tag.join('-').to_sym
+ end
+
+ def subtags
+ @subtags = tag.to_s.split('-').map { |subtag| subtag.to_s }
+ end
+
+ def to_sym
+ tag
+ end
+
+ def to_s
+ tag.to_s
+ end
+
+ def to_a
+ subtags
+ end
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/i18n-0.4.2/lib/i18n/version.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/version.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/i18n-0.4.2/lib/i18n/version.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/i18n-0.4.2/lib/i18n/version.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/.specification b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/.specification
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/.specification
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/.specification
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/History.txt b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/History.txt
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/History.txt
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/History.txt
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/License.txt b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/License.txt
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/License.txt
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/License.txt
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/Manifest.txt b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/Manifest.txt
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/Manifest.txt
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/Manifest.txt
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/README.txt b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/README.txt
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/README.txt
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/README.txt
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/Rakefile b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/Rakefile
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/Rakefile
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/Rakefile
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/jopenssl.jar b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/jopenssl.jar
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/jopenssl.jar
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/jopenssl.jar
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/jopenssl/version.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/jopenssl/version.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/jopenssl/version.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/jopenssl/version.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/bn.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/bn.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/bn.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/bn.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/buffering.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/buffering.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/buffering.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/buffering.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/cipher.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/cipher.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/cipher.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/cipher.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/config.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/config.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/config.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/config.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/digest.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/digest.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/digest.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/digest.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/dummy.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/dummy.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/dummy.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/dummy.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/dummyssl.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/dummyssl.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/dummyssl.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/dummyssl.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/pkcs7.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/pkcs7.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/pkcs7.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/pkcs7.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/ssl.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/ssl.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/ssl.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/ssl.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/x509.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/x509.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/jruby-openssl-0.7.4/lib/openssl/x509.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/jruby-openssl-0.7.4/lib/openssl/x509.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/.specification b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/.specification
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/.specification
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/.specification
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/core.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/core.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/core.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/core.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/rails.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/rails.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/rails.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/add/rails.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/common.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/common.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/common.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/common.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/generator.jar b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/generator.jar
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/generator.jar
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/generator.jar
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/parser.jar b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/parser.jar
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/parser.jar
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/ext/parser.jar
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb.orig b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb.orig
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb.orig
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/generator.rb.orig
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/parser.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/parser.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/parser.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/pure/parser.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb.orig b/sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb.orig
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb.orig
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/json-jruby-1.2.3-universal-java-1.6/lib/json/version.rb.orig
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/COPYING b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/COPYING
similarity index 92%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/COPYING
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/COPYING
index 11b4c6e0f6e..83b390bcb13 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/COPYING
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/COPYING
@@ -1,4 +1,4 @@
-Copyright (c) 2007, 2008, 2009 Christian Neukirchen
+Copyright (c) 2007, 2008, 2009, 2010 Christian Neukirchen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/KNOWN-ISSUES b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/KNOWN-ISSUES
similarity index 83%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/KNOWN-ISSUES
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/KNOWN-ISSUES
index 790199bde17..a1af5dc1eef 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/KNOWN-ISSUES
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/KNOWN-ISSUES
@@ -16,3 +16,6 @@
end
Of course, use this only when your app runs at "/".
+
+ Since lighttpd 1.4.23, you also can use the "fix-root-scriptname" flag
+ in fastcgi.server.
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/empty.log b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/RDOX
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/empty.log
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/RDOX
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/README b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/README
similarity index 78%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/README
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/README
index c58009ff2f8..a73a83aadbf 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/README
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/README
@@ -11,21 +11,13 @@ which all Rack applications should conform to.
== Specification changes in this release
-With Rack 1.0, the Rack specification (found in SPEC) changed in the
-following backward-incompatible ways. This was done to properly
-support Ruby 1.9 and to deprecate some problematic techniques:
-
-* Rack::VERSION has been pushed to [1,0].
-* Header values must be Strings now, split on "\n".
-* rack.input must be rewindable and support reading into a buffer,
- wrap with Rack::RewindableInput if it isn't.
-* Content-Length can be missing, in this case chunked transfer
- encoding is used.
-* Bodies can now additionally respond to #to_path with a filename to
- be served.
-* String bodies are deprecated and will not work with Ruby 1.9, use an
- Array with a single String instead.
-* rack.session is now specified.
+With Rack 1.1, the Rack specification (found in SPEC) changed in the
+following backward-incompatible ways.
+
+* Rack::VERSION has been pushed to [1,1].
+* rack.logger is now specified.
+* The SPEC now allows subclasses of the required types.
+* rack.input has to be opened in binary mode.
== Supported web servers
@@ -43,8 +35,11 @@ The included *handlers* connect all kinds of web servers to Rack:
These web servers include Rack handlers in their distributions:
* Ebb
* Fuzed
+* Glassfish v3
* Phusion Passenger (which is mod_rack for Apache and for nginx)
+* Rainbows!
* Unicorn
+* Zbatery
Any valid Rack app will run the same on all these handlers, without
changing anything.
@@ -70,6 +65,7 @@ These frameworks include Rack adapters in their distributions:
* Vintage
* Waves
* Wee
+* ... and many others.
Current links to these projects can be found at
http://wiki.ramaze.net/Home#other-frameworks
@@ -130,13 +126,13 @@ Either with the embedded WEBrick starter:
Or with rackup:
- bin/rackup -Ilib example/lobster.ru
+ bin/rackup -Ilib example/lobster.ru
By default, the lobster is found at http://localhost:9292.
== Installing with RubyGems
-A Gem of Rack is available. You can install it with:
+A Gem of Rack is available at gemcutter.org. You can install it with:
gem install rack
@@ -165,7 +161,6 @@ To run the test suite completely, you need:
* fcgi
* memcache-client
* mongrel
- * ruby-openid
* thin
The full set of tests test FCGI access with lighttpd (on port
@@ -283,16 +278,57 @@ run on port 11211) and memcache-client installed.
* Make sure WEBrick respects the :Host option
* Many Ruby 1.9 fixes.
+* January 3rd, 2009: Ninth public release 1.1.0.
+ * Moved Auth::OpenID to rack-contrib.
+ * SPEC change that relaxes Lint slightly to allow subclasses of the
+ required types
+ * SPEC change to document rack.input binary mode in greator detail
+ * SPEC define optional rack.logger specification
+ * File servers support X-Cascade header
+ * Imported Config middleware
+ * Imported ETag middleware
+ * Imported Runtime middleware
+ * Imported Sendfile middleware
+ * New Logger and NullLogger middlewares
+ * Added mime type for .ogv and .manifest.
+ * Don't squeeze PATH_INFO slashes
+ * Use Content-Type to determine POST params parsing
+ * Update Rack::Utils::HTTP_STATUS_CODES hash
+ * Add status code lookup utility
+ * Response should call #to_i on the status
+ * Add Request#user_agent
+ * Request#host knows about forwared host
+ * Return an empty string for Request#host if HTTP_HOST and
+ SERVER_NAME are both missing
+ * Allow MockRequest to accept hash params
+ * Optimizations to HeaderHash
+ * Refactored rackup into Rack::Server
+ * Added Utils.build_nested_query to complement Utils.parse_nested_query
+ * Added Utils::Multipart.build_multipart to complement
+ Utils::Multipart.parse_multipart
+ * Extracted set and delete cookie helpers into Utils so they can be
+ used outside Response
+ * Extract parse_query and parse_multipart in Request so subclasses
+ can change their behavior
+ * Enforce binary encoding in RewindableInput
+ * Set correct external_encoding for handlers that don't use RewindableInput
+
+* March 13th, 2011: Twelfth public release 1.2.2/1.1.2.
+ * Security fix in Rack::Auth::Digest::MD5: when authenticator
+ returned nil, permission was granted on empty password.
+
+* December 28th, 2011: Twenty first public release: 1.1.3.
+ * Security fix. http://www.ocert.org/advisories/ocert-2011-003.html
+ Further information here: http://jruby.org/2011/12/27/jruby-1-6-5-1
+
== Contact
-Please mail bugs, suggestions and patches to
-.
+Please post bugs, suggestions and patches to
+the bug tracker at .
Mailing list archives are available at
.
-There is a bug tracker at .
-
Git repository (send Git patches to the mailing list):
* http://github.com/rack/rack
* http://git.vuxu.org/cgi-bin/gitweb.cgi?p=rack.git
@@ -318,8 +354,14 @@ would like to thank:
* Luc Heinrich for the Cookie sessions, the static file handler and bugfixes.
* Armin Ronacher, for the logo and racktools.
* Aredridel, Ben Alpert, Dan Kubb, Daniel Roethlisberger, Matt Todd,
- Tom Robinson, Phil Hagelberg, and S. Brent Faulkner for bug fixing
- and other improvements.
+ Tom Robinson, Phil Hagelberg, S. Brent Faulkner, Bosko Milekic,
+ Daniel RodrÃguez Troitiño, Genki Takiuchi, Geoffrey Grosenbach,
+ Julien Sanchez, Kamal Fariz Mahyuddin, Masayoshi Takahashi, Patrick
+ Aljordm, Mig, and Kazuhiro Nishiyama for bug fixing and other
+ improvements.
+* Eric Wong, Hongli Lai, Jeremy Kemper for their continuous support
+ and API improvements.
+* Yehuda Katz and Carl Lerche for refactoring rackup.
* Brian Candler, for Rack::ContentType.
* Graham Batty, for improved handler loading.
* Stephen Bannasch, for bug reports and documentation.
@@ -334,7 +376,7 @@ would like to thank:
== Copyright
-Copyright (C) 2007, 2008, 2009 Christian Neukirchen
+Copyright (C) 2007, 2008, 2009, 2010 Christian Neukirchen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -349,7 +391,7 @@ all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -358,6 +400,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Rack::
Rack's Rubyforge project::
Official Rack repositories::
+Rack Lighthouse Bug Tracking::
rack-devel mailing list::
Christian Neukirchen::
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/SPEC b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/SPEC
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/SPEC
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/SPEC
index e4d252ecb01..d2260cbe70f 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/SPEC
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/SPEC
@@ -52,7 +52,7 @@ below.
request.
In addition to this, the Rack environment must include these
Rack-specific variables:
-rack.version:: The Array [1,0], representing this version of Rack.
+rack.version:: The Array [1,1], representing this version of Rack.
rack.url_scheme:: +http+ or +https+, depending on the request URL.
rack.input:: See below, the input stream.
rack.errors:: See below, the error stream.
@@ -68,6 +68,13 @@ be implemented by the server.
fetch(key, default = nil) (aliased as []);
delete(key);
clear;
+rack.logger:: A common object interface for logging messages.
+ The object must implement:
+ info(message, &block)
+ debug(message, &block)
+ warn(message, &block)
+ error(message, &block)
+ fatal(message, &block)
The server or the application can store their own data in the
environment, too. The keys must contain at least one dot,
and should be prefixed uniquely. The prefix rack.
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/bin/rackup b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/bin/rackup
new file mode 100755
index 00000000000..ad94af4be3b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/bin/rackup
@@ -0,0 +1,4 @@
+#!/usr/bin/env ruby
+
+require "rack"
+Rack::Server.start
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/contrib/rack_logo.svg b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/contrib/rack_logo.svg
new file mode 100755
index 00000000000..905dcd32b45
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/contrib/rack_logo.svg
@@ -0,0 +1,111 @@
+
+
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/lobster.ru b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/lobster.ru
new file mode 100755
index 00000000000..cc7ffcae889
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/lobster.ru
@@ -0,0 +1,4 @@
+require 'rack/lobster'
+
+use Rack::ShowExceptions
+run Rack::Lobster.new
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/protectedlobster.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/protectedlobster.rb
new file mode 100755
index 00000000000..108b9d05e7e
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/protectedlobster.rb
@@ -0,0 +1,14 @@
+require 'rack'
+require 'rack/lobster'
+
+lobster = Rack::Lobster.new
+
+protected_lobster = Rack::Auth::Basic.new(lobster) do |username, password|
+ 'secret' == password
+end
+
+protected_lobster.realm = 'Lobster 2.0'
+
+pretty_protected_lobster = Rack::ShowStatus.new(Rack::ShowExceptions.new(protected_lobster))
+
+Rack::Handler::WEBrick.run pretty_protected_lobster, :Port => 9292
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/protectedlobster.ru b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/protectedlobster.ru
new file mode 100755
index 00000000000..b0da62f0ce2
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/example/protectedlobster.ru
@@ -0,0 +1,8 @@
+require 'rack/lobster'
+
+use Rack::ShowExceptions
+use Rack::Auth::Basic, "Lobster 2.0" do |username, password|
+ 'secret' == password
+end
+
+run Rack::Lobster.new
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack.rb
similarity index 87%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack.rb
index 371d0156905..527f445e0aa 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack.rb
@@ -1,12 +1,8 @@
-# Copyright (C) 2007, 2008, 2009 Christian Neukirchen
+# Copyright (C) 2007, 2008, 2009, 2010 Christian Neukirchen
#
# Rack is freely distributable under the terms of an MIT-style license.
# See COPYING or http://www.opensource.org/licenses/mit-license.php.
-path = File.expand_path(File.dirname(__FILE__))
-$:.unshift(path) unless $:.include?(path)
-
-
# The Rack main module, serving as a namespace for all core Rack
# modules and classes.
#
@@ -15,7 +11,7 @@ $:.unshift(path) unless $:.include?(path)
module Rack
# The Rack protocol version number implemented.
- VERSION = [1,0]
+ VERSION = [1,1]
# Return the Rack protocol version as a dotted string.
def self.version
@@ -24,7 +20,7 @@ module Rack
# Return the Rack release as a dotted string.
def self.release
- "1.0"
+ "1.1.3"
end
autoload :Builder, "rack/builder"
@@ -32,8 +28,10 @@ module Rack
autoload :Chunked, "rack/chunked"
autoload :CommonLogger, "rack/commonlogger"
autoload :ConditionalGet, "rack/conditionalget"
+ autoload :Config, "rack/config"
autoload :ContentLength, "rack/content_length"
autoload :ContentType, "rack/content_type"
+ autoload :ETag, "rack/etag"
autoload :File, "rack/file"
autoload :Deflater, "rack/deflater"
autoload :Directory, "rack/directory"
@@ -42,10 +40,15 @@ module Rack
autoload :Head, "rack/head"
autoload :Lint, "rack/lint"
autoload :Lock, "rack/lock"
+ autoload :Logger, "rack/logger"
autoload :MethodOverride, "rack/methodoverride"
autoload :Mime, "rack/mime"
+ autoload :NullLogger, "rack/nulllogger"
autoload :Recursive, "rack/recursive"
autoload :Reloader, "rack/reloader"
+ autoload :Runtime, "rack/runtime"
+ autoload :Sendfile, "rack/sendfile"
+ autoload :Server, "rack/server"
autoload :ShowExceptions, "rack/showexceptions"
autoload :ShowStatus, "rack/showstatus"
autoload :Static, "rack/static"
@@ -62,7 +65,6 @@ module Rack
autoload :Basic, "rack/auth/basic"
autoload :AbstractRequest, "rack/auth/abstract/request"
autoload :AbstractHandler, "rack/auth/abstract/handler"
- autoload :OpenID, "rack/auth/openid"
module Digest
autoload :MD5, "rack/auth/digest/md5"
autoload :Nonce, "rack/auth/digest/nonce"
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/adapter/camping.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/adapter/camping.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/adapter/camping.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/adapter/camping.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/abstract/handler.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/abstract/handler.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/abstract/handler.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/abstract/handler.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/abstract/request.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/abstract/request.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/abstract/request.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/abstract/request.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/basic.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/basic.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/basic.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/basic.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/md5.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/md5.rb
similarity index 96%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/md5.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/md5.rb
index e579dc96325..d277571c804 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/md5.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/md5.rb
@@ -91,7 +91,8 @@ module Rack
end
def valid_digest?(auth)
- digest(auth, @authenticator.call(auth.username)) == auth.response
+ pw = @authenticator.call(auth.username)
+ pw && digest(auth, pw) == auth.response
end
def md5(data)
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/nonce.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/nonce.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/nonce.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/nonce.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/params.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/params.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/params.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/params.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/request.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/request.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/digest/request.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/auth/digest/request.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/builder.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/builder.rb
similarity index 72%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/builder.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/builder.rb
index 295235e56a9..530f0aaf07e 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/builder.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/builder.rb
@@ -24,6 +24,23 @@ module Rack
# You can use +map+ to construct a Rack::URLMap in a convenient way.
class Builder
+ def self.parse_file(config, opts = Server::Options.new)
+ options = {}
+ if config =~ /\.ru$/
+ cfgfile = ::File.read(config)
+ if cfgfile[/^#\\(.*)/] && opts
+ options = opts.parse! $1.split(/\s+/)
+ end
+ cfgfile.sub!(/^__END__\n.*/, '')
+ app = eval "Rack::Builder.new {( " + cfgfile + "\n )}.to_app",
+ TOPLEVEL_BINDING, config
+ else
+ require config
+ app = Object.const_get(::File.basename(config, '.rb').capitalize)
+ end
+ return app, options
+ end
+
def initialize(&block)
@ins = []
instance_eval(&block) if block_given?
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/cascade.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/cascade.rb
similarity index 50%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/cascade.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/cascade.rb
index a038aa1105d..14c3e54d350 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/cascade.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/cascade.rb
@@ -4,31 +4,36 @@ module Rack
# status codes).
class Cascade
+ NotFound = [404, {}, []]
+
attr_reader :apps
def initialize(apps, catch=404)
- @apps = apps
- @catch = [*catch]
+ @apps = []; @has_app = {}
+ apps.each { |app| add app }
+
+ @catch = {}
+ [*catch].each { |status| @catch[status] = true }
end
def call(env)
- status = headers = body = nil
- raise ArgumentError, "empty cascade" if @apps.empty?
- @apps.each { |app|
- begin
- status, headers, body = app.call(env)
- break unless @catch.include?(status.to_i)
- end
- }
- [status, headers, body]
+ result = NotFound
+
+ @apps.each do |app|
+ result = app.call(env)
+ break unless @catch.include?(result[0].to_i)
+ end
+
+ result
end
def add app
+ @has_app[app] = true
@apps << app
end
def include? app
- @apps.include? app
+ @has_app.include? app
end
alias_method :<<, :add
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/chunked.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/chunked.rb
similarity index 93%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/chunked.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/chunked.rb
index 280d89dd65a..dddf9694cb9 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/chunked.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/chunked.rb
@@ -19,7 +19,7 @@ module Rack
STATUS_WITH_NO_ENTITY_BODY.include?(status) ||
headers['Content-Length'] ||
headers['Transfer-Encoding']
- [status, headers.to_hash, body]
+ [status, headers, body]
else
dup.chunk(status, headers, body)
end
@@ -29,7 +29,7 @@ module Rack
@body = body
headers.delete('Content-Length')
headers['Transfer-Encoding'] = 'chunked'
- [status, headers.to_hash, self]
+ [status, headers, self]
end
def each
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/commonlogger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/commonlogger.rb
new file mode 100755
index 00000000000..1edc9b83607
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/commonlogger.rb
@@ -0,0 +1,49 @@
+module Rack
+ # Rack::CommonLogger forwards every request to an +app+ given, and
+ # logs a line in the Apache common log format to the +logger+, or
+ # rack.errors by default.
+ class CommonLogger
+ # Common Log Format: http://httpd.apache.org/docs/1.3/logs.html#common
+ # lilith.local - - [07/Aug/2006 23:58:02] "GET / HTTP/1.1" 500 -
+ # %{%s - %s [%s] "%s %s%s %s" %d %s\n} %
+ FORMAT = %{%s - %s [%s] "%s %s%s %s" %d %s %0.4f\n}
+
+ def initialize(app, logger=nil)
+ @app = app
+ @logger = logger
+ end
+
+ def call(env)
+ began_at = Time.now
+ status, header, body = @app.call(env)
+ header = Utils::HeaderHash.new(header)
+ log(env, status, header, began_at)
+ [status, header, body]
+ end
+
+ private
+
+ def log(env, status, header, began_at)
+ now = Time.now
+ length = extract_content_length(header)
+
+ logger = @logger || env['rack.errors']
+ logger.write FORMAT % [
+ env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"] || "-",
+ env["REMOTE_USER"] || "-",
+ now.strftime("%d/%b/%Y %H:%M:%S"),
+ env["REQUEST_METHOD"],
+ env["PATH_INFO"],
+ env["QUERY_STRING"].empty? ? "" : "?"+env["QUERY_STRING"],
+ env["HTTP_VERSION"],
+ status.to_s[0..3],
+ length,
+ now - began_at ]
+ end
+
+ def extract_content_length(headers)
+ value = headers['Content-Length'] or return '-'
+ value.to_s == '0' ? '-' : value
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/conditionalget.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/conditionalget.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/conditionalget.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/conditionalget.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/config.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/config.rb
new file mode 100755
index 00000000000..c6d446c0c85
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/config.rb
@@ -0,0 +1,15 @@
+module Rack
+ # Rack::Config modifies the environment using the block given during
+ # initialization.
+ class Config
+ def initialize(app, &block)
+ @app = app
+ @block = block
+ end
+
+ def call(env)
+ @block.call(env)
+ @app.call(env)
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/content_length.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/content_length.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/content_length.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/content_length.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/content_type.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/content_type.rb
similarity index 93%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/content_type.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/content_type.rb
index 0c1e1ca3e1d..874c28cd7be 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/content_type.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/content_type.rb
@@ -17,7 +17,7 @@ module Rack
status, headers, body = @app.call(env)
headers = Utils::HeaderHash.new(headers)
headers['Content-Type'] ||= @content_type
- [status, headers.to_hash, body]
+ [status, headers, body]
end
end
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/deflater.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/deflater.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/deflater.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/deflater.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/directory.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/directory.rb
similarity index 93%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/directory.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/directory.rb
index acdd3029d31..927ac0c9fb8 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/directory.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/directory.rb
@@ -71,7 +71,9 @@ table { width:100%%; }
body = "Forbidden\n"
size = Rack::Utils.bytesize(body)
- return [403, {"Content-Type" => "text/plain","Content-Length" => size.to_s}, [body]]
+ return [403, {"Content-Type" => "text/plain",
+ "Content-Length" => size.to_s,
+ "X-Cascade" => "pass"}, [body]]
end
def list_directory
@@ -123,7 +125,9 @@ table { width:100%%; }
def entity_not_found
body = "Entity not found: #{@path_info}\n"
size = Rack::Utils.bytesize(body)
- return [404, {"Content-Type" => "text/plain", "Content-Length" => size.to_s}, [body]]
+ return [404, {"Content-Type" => "text/plain",
+ "Content-Length" => size.to_s,
+ "X-Cascade" => "pass"}, [body]]
end
def each
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/etag.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/etag.rb
new file mode 100755
index 00000000000..06dbc6aa5f8
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/etag.rb
@@ -0,0 +1,23 @@
+require 'digest/md5'
+
+module Rack
+ # Automatically sets the ETag header on all String bodies
+ class ETag
+ def initialize(app)
+ @app = app
+ end
+
+ def call(env)
+ status, headers, body = @app.call(env)
+
+ if !headers.has_key?('ETag')
+ parts = []
+ body.each { |part| parts << part.to_s }
+ headers['ETag'] = %("#{Digest::MD5.hexdigest(parts.join(""))}")
+ [status, headers, parts]
+ else
+ [status, headers, body]
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/file.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/file.rb
similarity index 91%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/file.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/file.rb
index fe62bd6b86f..14af7b3bd74 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/file.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/file.rb
@@ -45,7 +45,8 @@ module Rack
def forbidden
body = "Forbidden\n"
[403, {"Content-Type" => "text/plain",
- "Content-Length" => body.size.to_s},
+ "Content-Length" => body.size.to_s,
+ "X-Cascade" => "pass"},
[body]]
end
@@ -73,7 +74,8 @@ module Rack
def not_found
body = "File not found: #{@path_info}\n"
[404, {"Content-Type" => "text/plain",
- "Content-Length" => body.size.to_s},
+ "Content-Length" => body.size.to_s,
+ "X-Cascade" => "pass"},
[body]]
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler.rb
similarity index 83%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler.rb
index 5624a1e79d2..3c09883ed5f 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler.rb
@@ -22,6 +22,25 @@ module Rack
end
end
+ def self.default(options = {})
+ # Guess.
+ if ENV.include?("PHP_FCGI_CHILDREN")
+ # We already speak FastCGI
+ options.delete :File
+ options.delete :Port
+
+ Rack::Handler::FastCGI
+ elsif ENV.include?("REQUEST_METHOD")
+ Rack::Handler::CGI
+ else
+ begin
+ Rack::Handler::Mongrel
+ rescue LoadError => e
+ Rack::Handler::WEBrick
+ end
+ end
+ end
+
# Transforms server-name constants to their canonical form as filenames,
# then tries to require them but silences the LoadError if not found
#
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/cgi.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/cgi.rb
similarity index 97%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/cgi.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/cgi.rb
index f45f3d735af..c6903f1558a 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/cgi.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/cgi.rb
@@ -15,7 +15,7 @@ module Rack
env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
- env.update({"rack.version" => [1,0],
+ env.update({"rack.version" => [1,1],
"rack.input" => $stdin,
"rack.errors" => $stderr,
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/evented_mongrel.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/evented_mongrel.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/evented_mongrel.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/evented_mongrel.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/fastcgi.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/fastcgi.rb
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/fastcgi.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/fastcgi.rb
index 1739d659392..b992a5f48cd 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/fastcgi.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/fastcgi.rb
@@ -33,10 +33,10 @@ module Rack
env.delete "HTTP_CONTENT_LENGTH"
env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
-
+
rack_input = RewindableInput.new(request.in)
- env.update({"rack.version" => [1,0],
+ env.update({"rack.version" => [1,1],
"rack.input" => rack_input,
"rack.errors" => request.err,
@@ -50,7 +50,6 @@ module Rack
env["QUERY_STRING"] ||= ""
env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
env["REQUEST_PATH"] ||= "/"
- env.delete "PATH_INFO" if env["PATH_INFO"] == ""
env.delete "CONTENT_TYPE" if env["CONTENT_TYPE"] == ""
env.delete "CONTENT_LENGTH" if env["CONTENT_LENGTH"] == ""
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/lsws.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/lsws.rb
similarity index 93%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/lsws.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/lsws.rb
index b4ddf4bba58..eabc0bc9b17 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/lsws.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/lsws.rb
@@ -1,5 +1,6 @@
require 'lsapi'
require 'rack/content_length'
+require 'rack/rewindable_input'
module Rack
module Handler
@@ -19,7 +20,7 @@ module Rack
rack_input = RewindableInput.new($stdin.read.to_s)
env.update(
- "rack.version" => [1,0],
+ "rack.version" => [1,1],
"rack.input" => rack_input,
"rack.errors" => $stderr,
"rack.multithread" => false,
@@ -38,6 +39,8 @@ module Rack
ensure
body.close if body.respond_to? :close
end
+ ensure
+ rack_input.close
end
def self.send_headers(status, headers)
print "Status: #{status}\r\n"
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/mongrel.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/mongrel.rb
similarity index 88%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/mongrel.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/mongrel.rb
index 7b448261c5e..b6b775ea811 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/mongrel.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/mongrel.rb
@@ -7,10 +7,14 @@ module Rack
module Handler
class Mongrel < ::Mongrel::HttpHandler
def self.run(app, options={})
- server = ::Mongrel::HttpServer.new(options[:Host] || '0.0.0.0',
- options[:Port] || 8080)
+ server = ::Mongrel::HttpServer.new(
+ options[:Host] || '0.0.0.0',
+ options[:Port] || 8080,
+ options[:num_processors] || 950,
+ options[:throttle] || 0,
+ options[:timeout] || 60)
# Acts like Rack::URLMap, utilizing Mongrel's own path finding methods.
- # Use is similar to #run, replacing the app argument with a hash of
+ # Use is similar to #run, replacing the app argument with a hash of
# { path=>app, ... } or an instance of Rack::URLMap.
if options[:map]
if app.is_a? Hash
@@ -48,7 +52,7 @@ module Rack
rack_input = request.body || StringIO.new('')
rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
- env.update({"rack.version" => [1,0],
+ env.update({"rack.version" => [1,1],
"rack.input" => rack_input,
"rack.errors" => $stderr,
@@ -59,7 +63,6 @@ module Rack
"rack.url_scheme" => "http",
})
env["QUERY_STRING"] ||= ""
- env.delete "PATH_INFO" if env["PATH_INFO"] == ""
status, headers, body = @app.call(env)
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/scgi.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/scgi.rb
similarity index 96%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/scgi.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/scgi.rb
index bd860a5d4b2..79a6b2bd183 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/scgi.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/scgi.rb
@@ -7,14 +7,14 @@ module Rack
module Handler
class SCGI < ::SCGI::Processor
attr_accessor :app
-
+
def self.run(app, options=nil)
new(options.merge(:app=>app,
:host=>options[:Host],
:port=>options[:Port],
:socket=>options[:Socket])).listen
end
-
+
def initialize(settings = {})
@app = Rack::Chunked.new(Rack::ContentLength.new(settings[:app]))
@log = Object.new
@@ -22,7 +22,7 @@ module Rack
def @log.error(*args); end
super(settings)
end
-
+
def process_request(request, input_body, socket)
env = {}.replace(request)
env.delete "HTTP_CONTENT_TYPE"
@@ -36,7 +36,7 @@ module Rack
rack_input = StringIO.new(input_body)
rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
- env.update({"rack.version" => [1,0],
+ env.update({"rack.version" => [1,1],
"rack.input" => rack_input,
"rack.errors" => $stderr,
"rack.multithread" => true,
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/swiftiplied_mongrel.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/swiftiplied_mongrel.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/swiftiplied_mongrel.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/swiftiplied_mongrel.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/thin.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/thin.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/thin.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/thin.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/webrick.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/webrick.rb
similarity index 94%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/webrick.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/webrick.rb
index 5b9ae7408b0..8d7f5724aff 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/handler/webrick.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/handler/webrick.rb
@@ -26,7 +26,7 @@ module Rack
rack_input = StringIO.new(req.body.to_s)
rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
- env.update({"rack.version" => [1,0],
+ env.update({"rack.version" => [1,1],
"rack.input" => rack_input,
"rack.errors" => $stderr,
@@ -40,9 +40,7 @@ module Rack
env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
env["QUERY_STRING"] ||= ""
env["REQUEST_PATH"] ||= "/"
- if env["PATH_INFO"] == ""
- env.delete "PATH_INFO"
- else
+ unless env["PATH_INFO"] == ""
path, n = req.request_uri.path, env["SCRIPT_NAME"].length
env["PATH_INFO"] = path[n, path.length-n]
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/head.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/head.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/head.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/head.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/lint.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/lint.rb
similarity index 93%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/lint.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/lint.rb
index 796807a019d..534375b9344 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/lint.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/lint.rb
@@ -61,7 +61,7 @@ module Rack
## subclassing allowed) that includes CGI-like headers.
## The application is free to modify the environment.
assert("env #{env.inspect} is not a Hash, but #{env.class}") {
- env.instance_of? Hash
+ env.kind_of? Hash
}
##
@@ -111,7 +111,7 @@ module Rack
## In addition to this, the Rack environment must include these
## Rack-specific variables:
- ## rack.version:: The Array [1,0], representing this version of Rack.
+ ## rack.version:: The Array [1,1], representing this version of Rack.
## rack.url_scheme:: +http+ or +https+, depending on the request URL.
## rack.input:: See below, the input stream.
## rack.errors:: See below, the error stream.
@@ -148,6 +148,35 @@ module Rack
}
end
+ ## rack.logger:: A common object interface for logging messages.
+ ## The object must implement:
+ if logger = env['rack.logger']
+ ## info(message, &block)
+ assert("logger #{logger.inspect} must respond to info") {
+ logger.respond_to?(:info)
+ }
+
+ ## debug(message, &block)
+ assert("logger #{logger.inspect} must respond to debug") {
+ logger.respond_to?(:debug)
+ }
+
+ ## warn(message, &block)
+ assert("logger #{logger.inspect} must respond to warn") {
+ logger.respond_to?(:warn)
+ }
+
+ ## error(message, &block)
+ assert("logger #{logger.inspect} must respond to error") {
+ logger.respond_to?(:error)
+ }
+
+ ## fatal(message, &block)
+ assert("logger #{logger.inspect} must respond to fatal") {
+ logger.respond_to?(:fatal)
+ }
+ end
+
## The server or the application can store their own data in the
## environment, too. The keys must contain at least one dot,
## and should be prefixed uniquely. The prefix rack.
@@ -175,7 +204,7 @@ module Rack
env.each { |key, value|
next if key.include? "." # Skip extensions
assert("env variable #{key} has non-string value #{value.inspect}") {
- value.instance_of? String
+ value.kind_of? String
}
}
@@ -184,7 +213,7 @@ module Rack
## * rack.version must be an array of Integers.
assert("rack.version must be an Array, was #{env["rack.version"].class}") {
- env["rack.version"].instance_of? Array
+ env["rack.version"].kind_of? Array
}
## * rack.url_scheme must either be +http+ or +https+.
assert("rack.url_scheme unknown: #{env["rack.url_scheme"].inspect}") {
@@ -243,7 +272,7 @@ module Rack
assert("rack.input #{input} is not opened in binary mode") {
input.binmode?
} if input.respond_to?(:binmode?)
-
+
## The input stream must respond to +gets+, +each+, +read+ and +rewind+.
[:gets, :each, :read, :rewind].each { |method|
assert("rack.input #{input} does not respond to ##{method}") {
@@ -269,7 +298,7 @@ module Rack
assert("rack.input#gets called with arguments") { args.size == 0 }
v = @input.gets
assert("rack.input#gets didn't return a String") {
- v.nil? or v.instance_of? String
+ v.nil? or v.kind_of? String
}
v
end
@@ -300,18 +329,18 @@ module Rack
args[1].kind_of?(String)
}
end
-
+
v = @input.read(*args)
-
+
assert("rack.input#read didn't return nil or a String") {
- v.nil? or v.instance_of? String
+ v.nil? or v.kind_of? String
}
if args[0].nil?
assert("rack.input#read(nil) returned nil on EOF") {
!v.nil?
}
end
-
+
v
end
@@ -320,12 +349,12 @@ module Rack
assert("rack.input#each called with arguments") { args.size == 0 }
@input.each { |line|
assert("rack.input#each didn't yield a String") {
- line.instance_of? String
+ line.kind_of? String
}
yield line
}
end
-
+
## * +rewind+ must be called without arguments. It rewinds the input
## stream back to the beginning. It must not raise Errno::ESPIPE:
## that is, it may not be a pipe or a socket. Therefore, handler
@@ -373,7 +402,7 @@ module Rack
## * +write+ must be called with a single argument that is a String.
def write(str)
- assert("rack.errors#write not called with a String") { str.instance_of? String }
+ assert("rack.errors#write not called with a String") { str.kind_of? String }
@error.write str
end
@@ -407,7 +436,7 @@ module Rack
header.each { |key, value|
## The header keys must be Strings.
assert("header key must be a string, was #{key.class}") {
- key.instance_of? String
+ key.kind_of? String
}
## The header must not contain a +Status+ key,
assert("header must not contain Status") { key.downcase != "status" }
@@ -499,7 +528,7 @@ module Rack
@body.each { |part|
## and must only yield String values.
assert("Body yielded non-string value #{part.inspect}") {
- part.instance_of? String
+ part.kind_of? String
}
yield part
}
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/lobster.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/lobster.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/lobster.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/lobster.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/lock.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/lock.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/lock.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/lock.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/logger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/logger.rb
new file mode 100755
index 00000000000..d67d8ce2d28
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/logger.rb
@@ -0,0 +1,20 @@
+require 'logger'
+
+module Rack
+ # Sets up rack.logger to write to rack.errors stream
+ class Logger
+ def initialize(app, level = ::Logger::INFO)
+ @app, @level = app, level
+ end
+
+ def call(env)
+ logger = ::Logger.new(env['rack.errors'])
+ logger.level = @level
+
+ env['rack.logger'] = logger
+ @app.call(env)
+ ensure
+ logger.close
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/methodoverride.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/methodoverride.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/methodoverride.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/methodoverride.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/mime.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/mime.rb
similarity index 98%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/mime.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/mime.rb
index 5a6a73a97be..1414d19a510 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/mime.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/mime.rb
@@ -14,7 +14,7 @@ module Rack
# Rack::Mime::MIME_TYPES.fetch('.foo', 'application/octet-stream')
def mime_type(ext, fallback='application/octet-stream')
- MIME_TYPES.fetch(ext, fallback)
+ MIME_TYPES.fetch(ext.to_s.downcase, fallback)
end
module_function :mime_type
@@ -105,6 +105,7 @@ module Rack
".m3u" => "audio/x-mpegurl",
".m4v" => "video/mp4",
".man" => "text/troff",
+ ".manifest"=> "text/cache-manifest",
".mathml" => "application/mathml+xml",
".mbox" => "application/mbox",
".mdoc" => "text/troff",
@@ -126,6 +127,7 @@ module Rack
".ods" => "application/vnd.oasis.opendocument.spreadsheet",
".odt" => "application/vnd.oasis.opendocument.text",
".ogg" => "application/ogg",
+ ".ogv" => "video/ogg",
".p" => "text/x-pascal",
".pas" => "text/x-pascal",
".pbm" => "image/x-portable-bitmap",
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/mock.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/mock.rb
similarity index 74%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/mock.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/mock.rb
index c34a2d7a150..23ecba178db 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/mock.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/mock.rb
@@ -40,7 +40,7 @@ module Rack
end
DEFAULT_ENV = {
- "rack.version" => [1,0],
+ "rack.version" => [1,1],
"rack.input" => StringIO.new,
"rack.errors" => StringIO.new,
"rack.multithread" => true,
@@ -73,14 +73,17 @@ module Rack
# Return the Rack environment used for a request to +uri+.
def self.env_for(uri="", opts={})
uri = URI(uri)
+ uri.path = "/#{uri.path}" unless uri.path[0] == ?/
+
env = DEFAULT_ENV.dup
- env["REQUEST_METHOD"] = opts[:method] || "GET"
+ env["REQUEST_METHOD"] = opts[:method] ? opts[:method].to_s.upcase : "GET"
env["SERVER_NAME"] = uri.host || "example.org"
env["SERVER_PORT"] = uri.port ? uri.port.to_s : "80"
env["QUERY_STRING"] = uri.query.to_s
env["PATH_INFO"] = (!uri.path || uri.path.empty?) ? "/" : uri.path
env["rack.url_scheme"] = uri.scheme || "http"
+ env["HTTPS"] = env["rack.url_scheme"] == "https" ? "on" : "off"
env["SCRIPT_NAME"] = opts[:script_name] || ""
@@ -90,7 +93,30 @@ module Rack
env["rack.errors"] = StringIO.new
end
- opts[:input] ||= ""
+ if params = opts[:params]
+ if env["REQUEST_METHOD"] == "GET"
+ params = Utils.parse_nested_query(params) if params.is_a?(String)
+ params.update(Utils.parse_nested_query(env["QUERY_STRING"]))
+ env["QUERY_STRING"] = Utils.build_nested_query(params)
+ elsif !opts.has_key?(:input)
+ opts["CONTENT_TYPE"] = "application/x-www-form-urlencoded"
+ if params.is_a?(Hash)
+ if data = Utils::Multipart.build_multipart(params)
+ opts[:input] = data
+ opts["CONTENT_LENGTH"] ||= data.length.to_s
+ opts["CONTENT_TYPE"] = "multipart/form-data; boundary=#{Utils::Multipart::MULTIPART_BOUNDARY}"
+ else
+ opts[:input] = Utils.build_nested_query(params)
+ end
+ else
+ opts[:input] = params
+ end
+ end
+ end
+
+ empty_str = ""
+ empty_str.force_encoding("ASCII-8BIT") if empty_str.respond_to? :force_encoding
+ opts[:input] ||= empty_str
if String === opts[:input]
rack_input = StringIO.new(opts[:input])
else
@@ -128,7 +154,7 @@ module Rack
@body = ""
body.each { |part| @body << part }
- @errors = errors.string
+ @errors = errors.string if errors.respond_to?(:string)
end
# Status
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/nulllogger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/nulllogger.rb
new file mode 100755
index 00000000000..77fb637deea
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/nulllogger.rb
@@ -0,0 +1,18 @@
+module Rack
+ class NullLogger
+ def initialize(app)
+ @app = app
+ end
+
+ def call(env)
+ env['rack.logger'] = self
+ @app.call(env)
+ end
+
+ def info(progname = nil, &block); end
+ def debug(progname = nil, &block); end
+ def warn(progname = nil, &block); end
+ def error(progname = nil, &block); end
+ def fatal(progname = nil, &block); end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/recursive.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/recursive.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/recursive.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/recursive.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/reloader.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/reloader.rb
similarity index 94%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/reloader.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/reloader.rb
index a9c566f7f55..a06de23abe8 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/reloader.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/reloader.rb
@@ -1,5 +1,6 @@
# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
-# All files in this distribution are subject to the terms of the Ruby license.
+# Rack::Reloader is subject to the terms of an MIT-style license.
+# See COPYING or http://www.opensource.org/licenses/mit-license.php.
require 'pathname'
@@ -92,6 +93,8 @@ module Rack
found, stat = safe_stat(path)
return ::File.expand_path(found), stat if found
end
+
+ return false, false
end
def safe_stat(file)
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/request.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/request.rb
similarity index 83%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/request.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/request.rb
index 2f64bd6cfb3..b3de1ce4685 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/request.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/request.rb
@@ -32,6 +32,7 @@ module Rack
def content_type; @env['CONTENT_TYPE'] end
def session; @env['rack.session'] ||= {} end
def session_options; @env['rack.session.options'] ||= {} end
+ def logger; @env['rack.logger'] end
# The media type (type/subtype) portion of the CONTENT_TYPE header
# without any media type parameters. e.g., when CONTENT_TYPE is
@@ -63,9 +64,17 @@ module Rack
media_type_params['charset']
end
+ def host_with_port
+ if forwarded = @env["HTTP_X_FORWARDED_HOST"]
+ forwarded.split(/,\s?/).last
+ else
+ @env['HTTP_HOST'] || "#{@env['SERVER_NAME'] || @env['SERVER_ADDR']}:#{@env['SERVER_PORT']}"
+ end
+ end
+
def host
# Remove port number.
- (@env["HTTP_HOST"] || @env["SERVER_NAME"]).to_s.gsub(/:\d+\z/, '')
+ host_with_port.to_s.gsub(/:\d+\z/, '')
end
def script_name=(s); @env["SCRIPT_NAME"] = s.to_s end
@@ -81,7 +90,6 @@ module Rack
# one of the media types presents in this list will not be eligible
# for form-data / param parsing.
FORM_DATA_MEDIA_TYPES = [
- nil,
'application/x-www-form-urlencoded',
'multipart/form-data'
]
@@ -92,15 +100,20 @@ module Rack
PARSEABLE_DATA_MEDIA_TYPES = [
'multipart/related',
'multipart/mixed'
- ]
+ ]
# Determine whether the request body contains form-data by checking
- # the request media_type against registered form-data media-types:
- # "application/x-www-form-urlencoded" and "multipart/form-data". The
+ # the request Content-Type for one of the media-types:
+ # "application/x-www-form-urlencoded" or "multipart/form-data". The
# list of form-data media types can be modified through the
# +FORM_DATA_MEDIA_TYPES+ array.
+ #
+ # A request body is also assumed to contain form-data when no
+ # Content-Type header is provided and the request_method is POST.
def form_data?
- FORM_DATA_MEDIA_TYPES.include?(media_type)
+ type = media_type
+ meth = env["rack.methodoverride.original_method"] || env['REQUEST_METHOD']
+ (meth == 'POST' && type.nil?) || FORM_DATA_MEDIA_TYPES.include?(type)
end
# Determine whether the request body contains data by checking
@@ -115,8 +128,7 @@ module Rack
@env["rack.request.query_hash"]
else
@env["rack.request.query_string"] = query_string
- @env["rack.request.query_hash"] =
- Utils.parse_nested_query(query_string)
+ @env["rack.request.query_hash"] = parse_query(query_string)
end
end
@@ -125,19 +137,20 @@ module Rack
# This method support both application/x-www-form-urlencoded and
# multipart/form-data.
def POST
- if @env["rack.request.form_input"].eql? @env["rack.input"]
+ if @env["rack.input"].nil?
+ raise "Missing rack.input"
+ elsif @env["rack.request.form_input"].eql? @env["rack.input"]
@env["rack.request.form_hash"]
elsif form_data? || parseable_data?
@env["rack.request.form_input"] = @env["rack.input"]
- unless @env["rack.request.form_hash"] =
- Utils::Multipart.parse_multipart(env)
+ unless @env["rack.request.form_hash"] = parse_multipart(env)
form_vars = @env["rack.input"].read
# Fix for Safari Ajax postings that always append \0
form_vars.sub!(/\0\z/, '')
@env["rack.request.form_vars"] = form_vars
- @env["rack.request.form_hash"] = Utils.parse_nested_query(form_vars)
+ @env["rack.request.form_hash"] = parse_query(form_vars)
@env["rack.input"].rewind
end
@@ -149,7 +162,7 @@ module Rack
# The union of GET and POST data.
def params
- self.put? ? self.GET : self.GET.update(self.POST)
+ self.GET.update(self.POST)
rescue EOFError => e
self.GET
end
@@ -175,6 +188,9 @@ module Rack
end
alias referrer referer
+ def user_agent
+ @env['HTTP_USER_AGENT']
+ end
def cookies
return {} unless @env["HTTP_COOKIE"]
@@ -214,11 +230,11 @@ module Rack
url
end
-
+
def path
script_name + path_info
end
-
+
def fullpath
query_string.empty? ? path : "#{path}?#{query_string}"
end
@@ -242,5 +258,14 @@ module Rack
@env['REMOTE_ADDR']
end
end
+
+ protected
+ def parse_query(qs)
+ Utils.parse_nested_query(qs)
+ end
+
+ def parse_multipart(env)
+ Utils::Multipart.parse_multipart(env)
+ end
end
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/response.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/response.rb
similarity index 71%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/response.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/response.rb
index 28b4d8302fb..a7f9bf2b7d8 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/response.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/response.rb
@@ -19,7 +19,7 @@ module Rack
attr_accessor :length
def initialize(body=[], status=200, header={}, &block)
- @status = status
+ @status = status.to_i
@header = Utils::HeaderHash.new({"Content-Type" => "text/html"}.
merge(header))
@@ -54,45 +54,11 @@ module Rack
end
def set_cookie(key, value)
- case value
- when Hash
- domain = "; domain=" + value[:domain] if value[:domain]
- path = "; path=" + value[:path] if value[:path]
- # According to RFC 2109, we need dashes here.
- # N.B.: cgi.rb uses spaces...
- expires = "; expires=" + value[:expires].clone.gmtime.
- strftime("%a, %d-%b-%Y %H:%M:%S GMT") if value[:expires]
- secure = "; secure" if value[:secure]
- httponly = "; HttpOnly" if value[:httponly]
- value = value[:value]
- end
- value = [value] unless Array === value
- cookie = Utils.escape(key) + "=" +
- value.map { |v| Utils.escape v }.join("&") +
- "#{domain}#{path}#{expires}#{secure}#{httponly}"
-
- case self["Set-Cookie"]
- when Array
- self["Set-Cookie"] << cookie
- when String
- self["Set-Cookie"] = [self["Set-Cookie"], cookie]
- when nil
- self["Set-Cookie"] = cookie
- end
+ Utils.set_cookie_header!(header, key, value)
end
def delete_cookie(key, value={})
- unless Array === self["Set-Cookie"]
- self["Set-Cookie"] = [self["Set-Cookie"]].compact
- end
-
- self["Set-Cookie"].reject! { |cookie|
- cookie =~ /\A#{Utils.escape(key)}=/
- }
-
- set_cookie(key,
- {:value => '', :path => nil, :domain => nil,
- :expires => Time.at(0) }.merge(value))
+ Utils.delete_cookie_header!(header, key, value)
end
def redirect(target, status=302)
@@ -105,9 +71,9 @@ module Rack
if [204, 304].include?(status.to_i)
header.delete "Content-Type"
- [status.to_i, header.to_hash, []]
+ [status.to_i, header, []]
else
- [status.to_i, header.to_hash, self]
+ [status.to_i, header, self]
end
end
alias to_a finish # For *response
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/rewindable_input.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/rewindable_input.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/rewindable_input.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/rewindable_input.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/runtime.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/runtime.rb
new file mode 100755
index 00000000000..1bd411fd1dc
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/runtime.rb
@@ -0,0 +1,27 @@
+module Rack
+ # Sets an "X-Runtime" response header, indicating the response
+ # time of the request, in seconds
+ #
+ # You can put it right before the application to see the processing
+ # time, or before all the other middlewares to include time for them,
+ # too.
+ class Runtime
+ def initialize(app, name = nil)
+ @app = app
+ @header_name = "X-Runtime"
+ @header_name << "-#{name}" if name
+ end
+
+ def call(env)
+ start_time = Time.now
+ status, headers, body = @app.call(env)
+ request_time = Time.now - start_time
+
+ if !headers.has_key?(@header_name)
+ headers[@header_name] = "%0.6f" % request_time
+ end
+
+ [status, headers, body]
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/sendfile.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/sendfile.rb
new file mode 100755
index 00000000000..4fa829462bc
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/sendfile.rb
@@ -0,0 +1,142 @@
+require 'rack/file'
+
+module Rack
+ class File #:nodoc:
+ alias :to_path :path
+ end
+
+ # = Sendfile
+ #
+ # The Sendfile middleware intercepts responses whose body is being
+ # served from a file and replaces it with a server specific X-Sendfile
+ # header. The web server is then responsible for writing the file contents
+ # to the client. This can dramatically reduce the amount of work required
+ # by the Ruby backend and takes advantage of the web servers optimized file
+ # delivery code.
+ #
+ # In order to take advantage of this middleware, the response body must
+ # respond to +to_path+ and the request must include an X-Sendfile-Type
+ # header. Rack::File and other components implement +to_path+ so there's
+ # rarely anything you need to do in your application. The X-Sendfile-Type
+ # header is typically set in your web servers configuration. The following
+ # sections attempt to document
+ #
+ # === Nginx
+ #
+ # Nginx supports the X-Accel-Redirect header. This is similar to X-Sendfile
+ # but requires parts of the filesystem to be mapped into a private URL
+ # hierarachy.
+ #
+ # The following example shows the Nginx configuration required to create
+ # a private "/files/" area, enable X-Accel-Redirect, and pass the special
+ # X-Sendfile-Type and X-Accel-Mapping headers to the backend:
+ #
+ # location /files/ {
+ # internal;
+ # alias /var/www/;
+ # }
+ #
+ # location / {
+ # proxy_redirect false;
+ #
+ # proxy_set_header Host $host;
+ # proxy_set_header X-Real-IP $remote_addr;
+ # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ #
+ # proxy_set_header X-Sendfile-Type X-Accel-Redirect
+ # proxy_set_header X-Accel-Mapping /files/=/var/www/;
+ #
+ # proxy_pass http://127.0.0.1:8080/;
+ # }
+ #
+ # Note that the X-Sendfile-Type header must be set exactly as shown above. The
+ # X-Accel-Mapping header should specify the name of the private URL pattern,
+ # followed by an equals sign (=), followed by the location on the file system
+ # that it maps to. The middleware performs a simple substitution on the
+ # resulting path.
+ #
+ # See Also: http://wiki.codemongers.com/NginxXSendfile
+ #
+ # === lighttpd
+ #
+ # Lighttpd has supported some variation of the X-Sendfile header for some
+ # time, although only recent version support X-Sendfile in a reverse proxy
+ # configuration.
+ #
+ # $HTTP["host"] == "example.com" {
+ # proxy-core.protocol = "http"
+ # proxy-core.balancer = "round-robin"
+ # proxy-core.backends = (
+ # "127.0.0.1:8000",
+ # "127.0.0.1:8001",
+ # ...
+ # )
+ #
+ # proxy-core.allow-x-sendfile = "enable"
+ # proxy-core.rewrite-request = (
+ # "X-Sendfile-Type" => (".*" => "X-Sendfile")
+ # )
+ # }
+ #
+ # See Also: http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModProxyCore
+ #
+ # === Apache
+ #
+ # X-Sendfile is supported under Apache 2.x using a separate module:
+ #
+ # http://tn123.ath.cx/mod_xsendfile/
+ #
+ # Once the module is compiled and installed, you can enable it using
+ # XSendFile config directive:
+ #
+ # RequestHeader Set X-Sendfile-Type X-Sendfile
+ # ProxyPassReverse / http://localhost:8001/
+ # XSendFile on
+
+ class Sendfile
+ F = ::File
+
+ def initialize(app, variation=nil)
+ @app = app
+ @variation = variation
+ end
+
+ def call(env)
+ status, headers, body = @app.call(env)
+ if body.respond_to?(:to_path)
+ case type = variation(env)
+ when 'X-Accel-Redirect'
+ path = F.expand_path(body.to_path)
+ if url = map_accel_path(env, path)
+ headers[type] = url
+ body = []
+ else
+ env['rack.errors'] << "X-Accel-Mapping header missing"
+ end
+ when 'X-Sendfile', 'X-Lighttpd-Send-File'
+ path = F.expand_path(body.to_path)
+ headers[type] = path
+ body = []
+ when '', nil
+ else
+ env['rack.errors'] << "Unknown x-sendfile variation: '#{variation}'.\n"
+ end
+ end
+ [status, headers, body]
+ end
+
+ private
+ def variation(env)
+ @variation ||
+ env['sendfile.type'] ||
+ env['HTTP_X_SENDFILE_TYPE']
+ end
+
+ def map_accel_path(env, file)
+ if mapping = env['HTTP_X_ACCEL_MAPPING']
+ internal, external = mapping.split('=', 2).map{ |p| p.strip }
+ file.sub(/^#{internal}/i, external)
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/server.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/server.rb
new file mode 100755
index 00000000000..4afe513faaa
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/server.rb
@@ -0,0 +1,212 @@
+require 'optparse'
+
+module Rack
+ class Server
+ class Options
+ def parse!(args)
+ options = {}
+ opt_parser = OptionParser.new("", 24, ' ') do |opts|
+ opts.banner = "Usage: rackup [ruby options] [rack options] [rackup config]"
+
+ opts.separator ""
+ opts.separator "Ruby options:"
+
+ lineno = 1
+ opts.on("-e", "--eval LINE", "evaluate a LINE of code") { |line|
+ eval line, TOPLEVEL_BINDING, "-e", lineno
+ lineno += 1
+ }
+
+ opts.on("-d", "--debug", "set debugging flags (set $DEBUG to true)") {
+ options[:debug] = true
+ }
+ opts.on("-w", "--warn", "turn warnings on for your script") {
+ options[:warn] = true
+ }
+
+ opts.on("-I", "--include PATH",
+ "specify $LOAD_PATH (may be used more than once)") { |path|
+ options[:include] = path.split(":")
+ }
+
+ opts.on("-r", "--require LIBRARY",
+ "require the library, before executing your script") { |library|
+ options[:require] = library
+ }
+
+ opts.separator ""
+ opts.separator "Rack options:"
+ opts.on("-s", "--server SERVER", "serve using SERVER (webrick/mongrel)") { |s|
+ options[:server] = s
+ }
+
+ opts.on("-o", "--host HOST", "listen on HOST (default: 0.0.0.0)") { |host|
+ options[:Host] = host
+ }
+
+ opts.on("-p", "--port PORT", "use PORT (default: 9292)") { |port|
+ options[:Port] = port
+ }
+
+ opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
+ options[:environment] = e
+ }
+
+ opts.on("-D", "--daemonize", "run daemonized in the background") { |d|
+ options[:daemonize] = d ? true : false
+ }
+
+ opts.on("-P", "--pid FILE", "file to store PID (default: rack.pid)") { |f|
+ options[:pid] = ::File.expand_path(f, Dir.pwd)
+ }
+
+ opts.separator ""
+ opts.separator "Common options:"
+
+ opts.on_tail("-h", "--help", "Show this message") do
+ puts opts
+ exit
+ end
+
+ opts.on_tail("--version", "Show version") do
+ puts "Rack #{Rack.version}"
+ exit
+ end
+ end
+ opt_parser.parse! args
+ options[:config] = args.last if args.last
+ options
+ end
+ end
+
+ def self.start
+ new.start
+ end
+
+ attr_accessor :options
+
+ def initialize(options = nil)
+ @options = options
+ end
+
+ def options
+ @options ||= parse_options(ARGV)
+ end
+
+ def default_options
+ {
+ :environment => "development",
+ :pid => nil,
+ :Port => 9292,
+ :Host => "0.0.0.0",
+ :AccessLog => [],
+ :config => ::File.expand_path("config.ru", Dir.pwd)
+ }
+ end
+
+ def app
+ @app ||= begin
+ if !::File.exist? options[:config]
+ abort "configuration #{options[:config]} not found"
+ end
+
+ app, options = Rack::Builder.parse_file(self.options[:config], opt_parser)
+ self.options.merge! options
+ app
+ end
+ end
+
+ def self.middleware
+ @middleware ||= begin
+ m = Hash.new {|h,k| h[k] = []}
+ m["deployment"].concat [lambda {|server| server.server =~ /CGI/ ? nil : [Rack::CommonLogger, $stderr] }]
+ m["development"].concat m["deployment"] + [[Rack::ShowExceptions], [Rack::Lint]]
+ m
+ end
+ end
+
+ def middleware
+ self.class.middleware
+ end
+
+ def start
+ if options[:debug]
+ $DEBUG = true
+ require 'pp'
+ p options[:server]
+ pp wrapped_app
+ pp app
+ end
+
+ if options[:warn]
+ $-w = true
+ end
+
+ if includes = options[:include]
+ $LOAD_PATH.unshift *includes
+ end
+
+ if library = options[:require]
+ require library
+ end
+
+ daemonize_app if options[:daemonize]
+ write_pid if options[:pid]
+ server.run wrapped_app, options
+ end
+
+ def server
+ @_server ||= Rack::Handler.get(options[:server]) || Rack::Handler.default
+ end
+
+ private
+ def parse_options(args)
+ options = default_options
+
+ # Don't evaluate CGI ISINDEX parameters.
+ # http://hoohoo.ncsa.uiuc.edu/cgi/cl.html
+ args.clear if ENV.include?("REQUEST_METHOD")
+
+ options.merge! opt_parser.parse! args
+ options
+ end
+
+ def opt_parser
+ Options.new
+ end
+
+ def build_app(app)
+ middleware[options[:environment]].reverse_each do |middleware|
+ middleware = middleware.call(self) if middleware.respond_to?(:call)
+ next unless middleware
+ klass = middleware.shift
+ app = klass.new(app, *middleware)
+ end
+ app
+ end
+
+ def wrapped_app
+ @wrapped_app ||= build_app app
+ end
+
+ def daemonize_app
+ if RUBY_VERSION < "1.9"
+ exit if fork
+ Process.setsid
+ exit if fork
+ Dir.chdir "/"
+ ::File.umask 0000
+ STDIN.reopen "/dev/null"
+ STDOUT.reopen "/dev/null", "a"
+ STDERR.reopen "/dev/null", "a"
+ else
+ Process.daemon
+ end
+ end
+
+ def write_pid
+ ::File.open(options[:pid], 'w'){ |f| f.write("#{Process.pid}") }
+ at_exit { ::File.delete(options[:pid]) if ::File.exist?(options[:pid]) }
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/abstract/id.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/abstract/id.rb
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/abstract/id.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/abstract/id.rb
index 218144c17f2..987467050a6 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/abstract/id.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/abstract/id.rb
@@ -107,18 +107,16 @@ module Rack
if not session_id = set_session(env, session_id, session, options)
env["rack.errors"].puts("Warning! #{self.class.name} failed to save session. Content dropped.")
- [status, headers, body]
elsif options[:defer] and not options[:renew]
env["rack.errors"].puts("Defering cookie for #{session_id}") if $VERBOSE
- [status, headers, body]
else
cookie = Hash.new
cookie[:value] = session_id
cookie[:expires] = Time.now + options[:expire_after] unless options[:expire_after].nil?
- response = Rack::Response.new(body, status, headers)
- response.set_cookie(@key, cookie.merge(options))
- response.to_a
+ Utils.set_cookie_header!(headers, @key, cookie.merge(options))
end
+
+ [status, headers, body]
end
# All thread safety and session retrival proceedures should occur here.
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/cookie.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/cookie.rb
similarity index 93%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/cookie.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/cookie.rb
index eace9bd0c6f..240e6c8dbe5 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/cookie.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/cookie.rb
@@ -70,16 +70,15 @@ module Rack
if session_data.size > (4096 - @key.size)
env["rack.errors"].puts("Warning! Rack::Session::Cookie data size exceeds 4K. Content dropped.")
- [status, headers, body]
else
options = env["rack.session.options"]
cookie = Hash.new
cookie[:value] = session_data
cookie[:expires] = Time.now + options[:expire_after] unless options[:expire_after].nil?
- response = Rack::Response.new(body, status, headers)
- response.set_cookie(@key, cookie.merge(options))
- response.to_a
+ Utils.set_cookie_header!(headers, @key, cookie.merge(options))
end
+
+ [status, headers, body]
end
def generate_hmac(data)
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/memcache.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/memcache.rb
new file mode 100755
index 00000000000..44629da3588
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/memcache.rb
@@ -0,0 +1,119 @@
+# AUTHOR: blink ; blink#ruby-lang@irc.freenode.net
+
+require 'rack/session/abstract/id'
+require 'memcache'
+
+module Rack
+ module Session
+ # Rack::Session::Memcache provides simple cookie based session management.
+ # Session data is stored in memcached. The corresponding session key is
+ # maintained in the cookie.
+ # You may treat Session::Memcache as you would Session::Pool with the
+ # following caveats.
+ #
+ # * Setting :expire_after to 0 would note to the Memcache server to hang
+ # onto the session data until it would drop it according to it's own
+ # specifications. However, the cookie sent to the client would expire
+ # immediately.
+ #
+ # Note that memcache does drop data before it may be listed to expire. For
+ # a full description of behaviour, please see memcache's documentation.
+
+ class Memcache < Abstract::ID
+ attr_reader :mutex, :pool
+ DEFAULT_OPTIONS = Abstract::ID::DEFAULT_OPTIONS.merge \
+ :namespace => 'rack:session',
+ :memcache_server => 'localhost:11211'
+
+ def initialize(app, options={})
+ super
+
+ @mutex = Mutex.new
+ mserv = @default_options[:memcache_server]
+ mopts = @default_options.
+ reject{|k,v| MemCache::DEFAULT_OPTIONS.include? k }
+ @pool = MemCache.new mserv, mopts
+ unless @pool.active? and @pool.servers.any?{|c| c.alive? }
+ raise 'No memcache servers'
+ end
+ end
+
+ def generate_sid
+ loop do
+ sid = super
+ break sid unless @pool.get(sid, true)
+ end
+ end
+
+ def get_session(env, session_id)
+ @mutex.lock if env['rack.multithread']
+ unless session_id and session = @pool.get(session_id)
+ session_id, session = generate_sid, {}
+ unless /^STORED/ =~ @pool.add(session_id, session)
+ raise "Session collision on '#{session_id.inspect}'"
+ end
+ end
+ session.instance_variable_set '@old', @pool.get(session_id, true)
+ return [session_id, session]
+ rescue MemCache::MemCacheError, Errno::ECONNREFUSED
+ # MemCache server cannot be contacted
+ warn "#{self} is unable to find memcached server."
+ warn $!.inspect
+ return [ nil, {} ]
+ ensure
+ @mutex.unlock if @mutex.locked?
+ end
+
+ def set_session(env, session_id, new_session, options)
+ expiry = options[:expire_after]
+ expiry = expiry.nil? ? 0 : expiry + 1
+
+ @mutex.lock if env['rack.multithread']
+ if options[:renew] or options[:drop]
+ @pool.delete session_id
+ return false if options[:drop]
+ session_id = generate_sid
+ @pool.add session_id, {} # so we don't worry about cache miss on #set
+ end
+
+ session = @pool.get(session_id) || {}
+ old_session = new_session.instance_variable_get '@old'
+ old_session = old_session ? Marshal.load(old_session) : {}
+
+ unless Hash === old_session and Hash === new_session
+ env['rack.errors'].
+ puts 'Bad old_session or new_session sessions provided.'
+ else # merge sessions
+ # alterations are either update or delete, making as few changes as
+ # possible to prevent possible issues.
+
+ # removed keys
+ delete = old_session.keys - new_session.keys
+ if $VERBOSE and not delete.empty?
+ env['rack.errors'].
+ puts "//@#{session_id}: delete #{delete*','}"
+ end
+ delete.each{|k| session.delete k }
+
+ # added or altered keys
+ update = new_session.keys.
+ select{|k| new_session[k] != old_session[k] }
+ if $VERBOSE and not update.empty?
+ env['rack.errors'].puts "//@#{session_id}: update #{update*','}"
+ end
+ update.each{|k| session[k] = new_session[k] }
+ end
+
+ @pool.set session_id, session, expiry
+ return session_id
+ rescue MemCache::MemCacheError, Errno::ECONNREFUSED
+ # MemCache server cannot be contacted
+ warn "#{self} is unable to find memcached server."
+ warn $!.inspect
+ return false
+ ensure
+ @mutex.unlock if @mutex.locked?
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/pool.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/pool.rb
similarity index 99%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/pool.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/pool.rb
index f6f87408bbc..b3f8bd726a1 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/pool.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/session/pool.rb
@@ -13,7 +13,7 @@ module Rack
# In the context of a multithreaded environment, sessions being
# committed to the pool is done in a merging manner.
#
- # The :drop option is available in rack.session.options if you with to
+ # The :drop option is available in rack.session.options if you wish to
# explicitly remove the session from the session cache.
#
# Example:
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/showexceptions.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/showexceptions.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/showexceptions.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/showexceptions.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/showstatus.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/showstatus.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/showstatus.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/showstatus.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/static.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/static.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/static.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/static.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/urlmap.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/urlmap.rb
similarity index 72%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/urlmap.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/urlmap.rb
index fcf6616c58c..b699d35b943 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/urlmap.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/urlmap.rb
@@ -28,27 +28,28 @@ module Rack
raise ArgumentError, "paths need to start with /"
end
location = location.chomp('/')
+ match = Regexp.new("^#{Regexp.quote(location).gsub('/', '/+')}(.*)", nil, 'n')
- [host, location, app]
- }.sort_by { |(h, l, a)| [h ? -h.size : (-1.0 / 0.0), -l.size] } # Longest path first
+ [host, location, match, app]
+ }.sort_by { |(h, l, m, a)| [h ? -h.size : (-1.0 / 0.0), -l.size] } # Longest path first
end
def call(env)
- path = env["PATH_INFO"].to_s.squeeze("/")
+ path = env["PATH_INFO"].to_s
script_name = env['SCRIPT_NAME']
hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT')
- @mapping.each { |host, location, app|
+ @mapping.each { |host, location, match, app|
next unless (hHost == host || sName == host \
|| (host.nil? && (hHost == sName || hHost == sName+':'+sPort)))
- next unless location == path[0, location.size]
- next unless path[location.size] == nil || path[location.size] == ?/
+ next unless path =~ match && rest = $1
+ next unless rest.empty? || rest[0] == ?/
return app.call(
env.merge(
'SCRIPT_NAME' => (script_name + location),
- 'PATH_INFO' => path[location.size..-1]))
+ 'PATH_INFO' => rest))
}
- [404, {"Content-Type" => "text/plain"}, ["Not Found: #{path}"]]
+ [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found: #{path}"]]
end
end
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/utils.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/utils.rb
similarity index 56%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/utils.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/utils.rb
index d54c928c48b..fc6e8a2b1ee 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/utils.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/lib/rack/utils.rb
@@ -27,7 +27,15 @@ module Rack
module_function :unescape
DEFAULT_SEP = /[&;] */n
-
+
+ class << self
+ attr_accessor :key_space_limit
+ end
+
+ # The default number of bytes to allow parameter keys to take up.
+ # This helps prevent a rogue client from flooding a Request.
+ self.key_space_limit = 65536
+
# Stolen from Mongrel, with some small modifications:
# Parses a query string by breaking it up at the '&'
# and ';' characters. You can also use this to parse
@@ -36,9 +44,19 @@ module Rack
def parse_query(qs, d = nil)
params = {}
+ max_key_space = Utils.key_space_limit
+ bytes = 0
+
(qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
k, v = p.split('=', 2).map { |x| unescape(x) }
+ if k
+ bytes += k.size
+ if bytes > max_key_space
+ raise RangeError, "exceeded available parameter key space"
+ end
+ end
+
if cur = params[k]
if cur.class == Array
params[k] << v
@@ -57,8 +75,19 @@ module Rack
def parse_nested_query(qs, d = nil)
params = {}
+ max_key_space = Utils.key_space_limit
+ bytes = 0
+
(qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
k, v = unescape(p).split('=', 2)
+
+ if k
+ bytes += k.size
+ if bytes > max_key_space
+ raise RangeError, "exceeded available parameter key space"
+ end
+ end
+
normalize_params(params, k, v)
end
@@ -109,6 +138,25 @@ module Rack
end
module_function :build_query
+ def build_nested_query(value, prefix = nil)
+ case value
+ when Array
+ value.map { |v|
+ build_nested_query(v, "#{prefix}[]")
+ }.join("&")
+ when Hash
+ value.map { |k, v|
+ build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k))
+ }.join("&")
+ when String
+ raise ArgumentError, "value must be a Hash" if prefix.nil?
+ "#{prefix}=#{escape(value)}"
+ else
+ prefix
+ end
+ end
+ module_function :build_nested_query
+
# Escape ampersands, brackets and quotes to their HTML/XML entities.
def escape_html(string)
string.to_s.gsub("&", "&").
@@ -149,6 +197,81 @@ module Rack
end
module_function :select_best_encoding
+ def set_cookie_header!(header, key, value)
+ case value
+ when Hash
+ domain = "; domain=" + value[:domain] if value[:domain]
+ path = "; path=" + value[:path] if value[:path]
+ # According to RFC 2109, we need dashes here.
+ # N.B.: cgi.rb uses spaces...
+ expires = "; expires=" +
+ rfc2822(value[:expires].clone.gmtime) if value[:expires]
+ secure = "; secure" if value[:secure]
+ httponly = "; HttpOnly" if value[:httponly]
+ value = value[:value]
+ end
+ value = [value] unless Array === value
+ cookie = escape(key) + "=" +
+ value.map { |v| escape v }.join("&") +
+ "#{domain}#{path}#{expires}#{secure}#{httponly}"
+
+ case header["Set-Cookie"]
+ when nil, ''
+ header["Set-Cookie"] = cookie
+ when String
+ header["Set-Cookie"] = [header["Set-Cookie"], cookie].join("\n")
+ when Array
+ header["Set-Cookie"] = (header["Set-Cookie"] + [cookie]).join("\n")
+ end
+
+ nil
+ end
+ module_function :set_cookie_header!
+
+ def delete_cookie_header!(header, key, value = {})
+ case header["Set-Cookie"]
+ when nil, ''
+ cookies = []
+ when String
+ cookies = header["Set-Cookie"].split("\n")
+ when Array
+ cookies = header["Set-Cookie"]
+ end
+
+ cookies.reject! { |cookie|
+ if value[:domain]
+ cookie =~ /\A#{escape(key)}=.*domain=#{value[:domain]}/
+ else
+ cookie =~ /\A#{escape(key)}=/
+ end
+ }
+
+ header["Set-Cookie"] = cookies.join("\n")
+
+ set_cookie_header!(header, key,
+ {:value => '', :path => nil, :domain => nil,
+ :expires => Time.at(0) }.merge(value))
+
+ nil
+ end
+ module_function :delete_cookie_header!
+
+ # Modified version of stdlib time.rb Time#rfc2822 to use '%d-%b-%Y' instead
+ # of '% %b %Y'.
+ # It assumes that the time is in GMT to comply to the RFC 2109.
+ #
+ # NOTE: I'm not sure the RFC says it requires GMT, but is ambigous enough
+ # that I'm certain someone implemented only that option.
+ # Do not use %a and %b from Time.strptime, it would use localized names for
+ # weekday and month.
+ #
+ def rfc2822(time)
+ wday = Time::RFC2822_DAY_NAME[time.wday]
+ mon = Time::RFC2822_MONTH_NAME[time.mon - 1]
+ time.strftime("#{wday}, %d-#{mon}-%Y %H:%M:%S GMT")
+ end
+ module_function :rfc2822
+
# Return the bytesize of String; uses String#length under Ruby 1.8 and
# String#bytesize under 1.9.
if ''.respond_to?(:bytesize)
@@ -191,11 +314,22 @@ module Rack
# A case-insensitive Hash that preserves the original case of a
# header when set.
class HeaderHash < Hash
+ def self.new(hash={})
+ HeaderHash === hash ? hash : super(hash)
+ end
+
def initialize(hash={})
+ super()
@names = {}
hash.each { |k, v| self[k] = v }
end
+ def each
+ super do |k, v|
+ yield(k, v.respond_to?(:to_ary) ? v.to_ary.join("\n") : v)
+ end
+ end
+
def to_hash
inject({}) do |hash, (k,v)|
if v.respond_to? :to_ary
@@ -208,21 +342,24 @@ module Rack
end
def [](k)
- super @names[k.downcase]
+ super(@names[k] ||= @names[k.downcase])
end
def []=(k, v)
delete k
- @names[k.downcase] = k
+ @names[k] = @names[k.downcase] = k
super k, v
end
def delete(k)
- super @names.delete(k.downcase)
+ canonical = k.downcase
+ result = super @names.delete(canonical)
+ @names.delete_if { |name,| name.downcase == canonical }
+ result
end
def include?(k)
- @names.has_key? k.downcase
+ @names.include?(k) || @names.include?(k.downcase)
end
alias_method :has_key?, :include?
@@ -238,13 +375,23 @@ module Rack
hash = dup
hash.merge! other
end
+
+ def replace(other)
+ clear
+ other.each { |k, v| self[k] = v }
+ self
+ end
end
# Every standard HTTP code mapped to the appropriate message.
- # Stolen from Mongrel.
+ # Generated with:
+ # curl -s http://www.iana.org/assignments/http-status-codes | \
+ # ruby -ane 'm = /^(\d{3}) +(\S[^\[(]+)/.match($_) and
+ # puts " #{m[1]} => \x27#{m[2].strip}x27,"'
HTTP_STATUS_CODES = {
100 => 'Continue',
101 => 'Switching Protocols',
+ 102 => 'Processing',
200 => 'OK',
201 => 'Created',
202 => 'Accepted',
@@ -252,12 +399,15 @@ module Rack
204 => 'No Content',
205 => 'Reset Content',
206 => 'Partial Content',
+ 207 => 'Multi-Status',
+ 226 => 'IM Used',
300 => 'Multiple Choices',
301 => 'Moved Permanently',
302 => 'Found',
303 => 'See Other',
304 => 'Not Modified',
305 => 'Use Proxy',
+ 306 => 'Reserved',
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'Unauthorized',
@@ -273,27 +423,76 @@ module Rack
411 => 'Length Required',
412 => 'Precondition Failed',
413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Large',
+ 414 => 'Request-URI Too Long',
415 => 'Unsupported Media Type',
416 => 'Requested Range Not Satisfiable',
417 => 'Expectation Failed',
+ 422 => 'Unprocessable Entity',
+ 423 => 'Locked',
+ 424 => 'Failed Dependency',
+ 426 => 'Upgrade Required',
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
- 505 => 'HTTP Version Not Supported'
+ 505 => 'HTTP Version Not Supported',
+ 506 => 'Variant Also Negotiates',
+ 507 => 'Insufficient Storage',
+ 510 => 'Not Extended',
}
# Responses with HTTP status codes that should not have an entity body
STATUS_WITH_NO_ENTITY_BODY = Set.new((100..199).to_a << 204 << 304)
+ SYMBOL_TO_STATUS_CODE = HTTP_STATUS_CODES.inject({}) { |hash, (code, message)|
+ hash[message.downcase.gsub(/\s|-/, '_').to_sym] = code
+ hash
+ }
+
+ def status_code(status)
+ if status.is_a?(Symbol)
+ SYMBOL_TO_STATUS_CODE[status] || 500
+ else
+ status.to_i
+ end
+ end
+ module_function :status_code
+
# A multipart form data parser, adapted from IOWA.
#
# Usually, Rack::Request#POST takes care of calling this.
module Multipart
+ class UploadedFile
+ # The filename, *not* including the path, of the "uploaded" file
+ attr_reader :original_filename
+
+ # The content type of the "uploaded" file
+ attr_accessor :content_type
+
+ def initialize(path, content_type = "text/plain", binary = false)
+ raise "#{path} file does not exist" unless ::File.exist?(path)
+ @content_type = content_type
+ @original_filename = ::File.basename(path)
+ @tempfile = Tempfile.new(@original_filename)
+ @tempfile.set_encoding(Encoding::BINARY) if @tempfile.respond_to?(:set_encoding)
+ @tempfile.binmode if binary
+ FileUtils.copy_file(path, @tempfile.path)
+ end
+
+ def path
+ @tempfile.path
+ end
+ alias_method :local_path, :path
+
+ def method_missing(method_name, *args, &block) #:nodoc:
+ @tempfile.__send__(method_name, *args, &block)
+ end
+ end
+
EOL = "\r\n"
+ MULTIPART_BOUNDARY = "AaB03x"
def self.parse_multipart(env)
unless env['CONTENT_TYPE'] =~
@@ -320,6 +519,9 @@ module Rack
rx = /(?:#{EOL})?#{Regexp.quote boundary}(#{EOL}|--)/n
+ max_key_space = Utils.key_space_limit
+ bytes = 0
+
loop {
head = nil
body = ''
@@ -334,6 +536,13 @@ module Rack
content_type = head[/Content-Type: (.*)#{EOL}/ni, 1]
name = head[/Content-Disposition:.*\s+name="?([^\";]*)"?/ni, 1] || head[/Content-ID:\s*([^#{EOL}]*)/ni, 1]
+ if name
+ bytes += name.size
+ if bytes > max_key_space
+ raise RangeError, "exceeded available parameter key space"
+ end
+ end
+
if content_type || filename
body = Tempfile.new("RackMultipart")
body.binmode if body.respond_to?(:binmode)
@@ -378,7 +587,7 @@ module Rack
:name => name, :tempfile => body, :head => head}
elsif !filename && content_type
body.rewind
-
+
# Generic multipart cases, not coming from a form
data = {:type => content_type,
:name => name, :tempfile => body, :head => head}
@@ -388,7 +597,8 @@ module Rack
Utils.normalize_params(params, name, data) unless data.nil?
- break if buf.empty? || content_length == -1
+ # break if we're at the end of a buffer, but not if it is the end of a field
+ break if (buf.empty? && $1 != EOL) || content_length == -1
}
input.rewind
@@ -396,6 +606,76 @@ module Rack
params
end
end
+
+ def self.build_multipart(params, first = true)
+ if first
+ unless params.is_a?(Hash)
+ raise ArgumentError, "value must be a Hash"
+ end
+
+ multipart = false
+ query = lambda { |value|
+ case value
+ when Array
+ value.each(&query)
+ when Hash
+ value.values.each(&query)
+ when UploadedFile
+ multipart = true
+ end
+ }
+ params.values.each(&query)
+ return nil unless multipart
+ end
+
+ flattened_params = Hash.new
+
+ params.each do |key, value|
+ k = first ? key.to_s : "[#{key}]"
+
+ case value
+ when Array
+ value.map { |v|
+ build_multipart(v, false).each { |subkey, subvalue|
+ flattened_params["#{k}[]#{subkey}"] = subvalue
+ }
+ }
+ when Hash
+ build_multipart(value, false).each { |subkey, subvalue|
+ flattened_params[k + subkey] = subvalue
+ }
+ else
+ flattened_params[k] = value
+ end
+ end
+
+ if first
+ flattened_params.map { |name, file|
+ if file.respond_to?(:original_filename)
+ ::File.open(file.path, "rb") do |f|
+ f.set_encoding(Encoding::BINARY) if f.respond_to?(:set_encoding)
+<<-EOF
+--#{MULTIPART_BOUNDARY}\r
+Content-Disposition: form-data; name="#{name}"; filename="#{Utils.escape(file.original_filename)}"\r
+Content-Type: #{file.content_type}\r
+Content-Length: #{::File.stat(file.path).size}\r
+\r
+#{f.read}\r
+EOF
+ end
+ else
+<<-EOF
+--#{MULTIPART_BOUNDARY}\r
+Content-Disposition: form-data; name="#{name}"\r
+\r
+#{file}\r
+EOF
+ end
+ }.join + "--#{MULTIPART_BOUNDARY}--\r"
+ else
+ flattened_params
+ end
+ end
end
end
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/rack.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/rack.gemspec
new file mode 100755
index 00000000000..1f04bcc7c54
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/rack.gemspec
@@ -0,0 +1,42 @@
+$:.unshift(File.expand_path('../lib', __FILE__))
+require 'rack' # For Rack.release
+
+Gem::Specification.new do |s|
+ s.name = "rack"
+ s.version = Rack.release
+ s.platform = Gem::Platform::RUBY
+ s.summary = "a modular Ruby webserver interface"
+
+ s.description = <<-EOF
+Rack provides minimal, modular and adaptable interface for developing
+web applications in Ruby. By wrapping HTTP requests and responses in
+the simplest way possible, it unifies and distills the API for web
+servers, web frameworks, and software in between (the so-called
+middleware) into a single method call.
+
+Also see http://rack.rubyforge.org.
+EOF
+
+ s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*}'] +
+ %w(COPYING KNOWN-ISSUES rack.gemspec RDOX README SPEC)
+ s.bindir = 'bin'
+ s.executables << 'rackup'
+ s.require_path = 'lib'
+ s.has_rdoc = true
+ s.extra_rdoc_files = ['README', 'SPEC', 'KNOWN-ISSUES']
+ s.test_files = Dir['test/{test,spec}_*.rb']
+
+ s.author = 'Christian Neukirchen'
+ s.email = 'chneukirchen@gmail.com'
+ s.homepage = 'http://rack.rubyforge.org'
+ s.rubyforge_project = 'rack'
+
+ s.add_development_dependency 'test-spec'
+
+ s.add_development_dependency 'activesupport', '< 2'
+ s.add_development_dependency 'camping', '< 1.6'
+ s.add_development_dependency 'fcgi'
+ s.add_development_dependency 'memcache-client'
+ s.add_development_dependency 'mongrel'
+ s.add_development_dependency 'thin', '< 1.2' # since 1.2 or so, specs fail on Method
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_auth_basic.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_auth_basic.rb
new file mode 100755
index 00000000000..0176efc8b30
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_auth_basic.rb
@@ -0,0 +1,73 @@
+require 'test/spec'
+
+require 'rack/auth/basic'
+require 'rack/mock'
+
+context 'Rack::Auth::Basic' do
+
+ def realm
+ 'WallysWorld'
+ end
+
+ def unprotected_app
+ lambda { |env| [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ] }
+ end
+
+ def protected_app
+ app = Rack::Auth::Basic.new(unprotected_app) { |username, password| 'Boss' == username }
+ app.realm = realm
+ app
+ end
+
+ setup do
+ @request = Rack::MockRequest.new(protected_app)
+ end
+
+ def request_with_basic_auth(username, password, &block)
+ request 'HTTP_AUTHORIZATION' => 'Basic ' + ["#{username}:#{password}"].pack("m*"), &block
+ end
+
+ def request(headers = {})
+ yield @request.get('/', headers)
+ end
+
+ def assert_basic_auth_challenge(response)
+ response.should.be.a.client_error
+ response.status.should.equal 401
+ response.should.include 'WWW-Authenticate'
+ response.headers['WWW-Authenticate'].should =~ /Basic realm="#{Regexp.escape(realm)}"/
+ response.body.should.be.empty
+ end
+
+ specify 'should challenge correctly when no credentials are specified' do
+ request do |response|
+ assert_basic_auth_challenge response
+ end
+ end
+
+ specify 'should rechallenge if incorrect credentials are specified' do
+ request_with_basic_auth 'joe', 'password' do |response|
+ assert_basic_auth_challenge response
+ end
+ end
+
+ specify 'should return application output if correct credentials are specified' do
+ request_with_basic_auth 'Boss', 'password' do |response|
+ response.status.should.equal 200
+ response.body.to_s.should.equal 'Hi Boss'
+ end
+ end
+
+ specify 'should return 400 Bad Request if different auth scheme used' do
+ request 'HTTP_AUTHORIZATION' => 'Digest params' do |response|
+ response.should.be.a.client_error
+ response.status.should.equal 400
+ response.should.not.include 'WWW-Authenticate'
+ end
+ end
+
+ specify 'realm as optional constructor arg' do
+ app = Rack::Auth::Basic.new(unprotected_app, realm) { true }
+ assert_equal realm, app.realm
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_auth_digest.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_auth_digest.rb
new file mode 100755
index 00000000000..7413aa48ed0
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_auth_digest.rb
@@ -0,0 +1,232 @@
+require 'test/spec'
+
+require 'rack/auth/digest/md5'
+require 'rack/mock'
+
+context 'Rack::Auth::Digest::MD5' do
+
+ def realm
+ 'WallysWorld'
+ end
+
+ def unprotected_app
+ lambda do |env|
+ [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ]
+ end
+ end
+
+ def protected_app
+ app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username|
+ { 'Alice' => 'correct-password' }[username]
+ end
+ app.realm = realm
+ app.opaque = 'this-should-be-secret'
+ app
+ end
+
+ def protected_app_with_hashed_passwords
+ app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username|
+ username == 'Alice' ? Digest::MD5.hexdigest("Alice:#{realm}:correct-password") : nil
+ end
+ app.realm = realm
+ app.opaque = 'this-should-be-secret'
+ app.passwords_hashed = true
+ app
+ end
+
+ def partially_protected_app
+ Rack::URLMap.new({
+ '/' => unprotected_app,
+ '/protected' => protected_app
+ })
+ end
+
+ def protected_app_with_method_override
+ Rack::MethodOverride.new(protected_app)
+ end
+
+ setup do
+ @request = Rack::MockRequest.new(protected_app)
+ end
+
+ def request(method, path, headers = {}, &block)
+ response = @request.request(method, path, headers)
+ block.call(response) if block
+ return response
+ end
+
+ class MockDigestRequest
+ def initialize(params)
+ @params = params
+ end
+ def method_missing(sym)
+ if @params.has_key? k = sym.to_s
+ return @params[k]
+ end
+ super
+ end
+ def method
+ @params['method']
+ end
+ def response(password)
+ Rack::Auth::Digest::MD5.new(nil).send :digest, self, password
+ end
+ end
+
+ def request_with_digest_auth(method, path, username, password, options = {}, &block)
+ request_options = {}
+ request_options[:input] = options.delete(:input) if options.include? :input
+
+ response = request(method, path, request_options)
+
+ return response unless response.status == 401
+
+ if wait = options.delete(:wait)
+ sleep wait
+ end
+
+ challenge = response['WWW-Authenticate'].split(' ', 2).last
+
+ params = Rack::Auth::Digest::Params.parse(challenge)
+
+ params['username'] = username
+ params['nc'] = '00000001'
+ params['cnonce'] = 'nonsensenonce'
+ params['uri'] = path
+
+ params['method'] = method
+
+ params.update options
+
+ params['response'] = MockDigestRequest.new(params).response(password)
+
+ request(method, path, request_options.merge('HTTP_AUTHORIZATION' => "Digest #{params}"), &block)
+ end
+
+ def assert_digest_auth_challenge(response)
+ response.should.be.a.client_error
+ response.status.should.equal 401
+ response.should.include 'WWW-Authenticate'
+ response.headers['WWW-Authenticate'].should =~ /^Digest /
+ response.body.should.be.empty
+ end
+
+ def assert_bad_request(response)
+ response.should.be.a.client_error
+ response.status.should.equal 400
+ response.should.not.include 'WWW-Authenticate'
+ end
+
+ specify 'should challenge when no credentials are specified' do
+ request 'GET', '/' do |response|
+ assert_digest_auth_challenge response
+ end
+ end
+
+ specify 'should return application output if correct credentials given' do
+ request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response|
+ response.status.should.equal 200
+ response.body.to_s.should.equal 'Hi Alice'
+ end
+ end
+
+ specify 'should return application output if correct credentials given (hashed passwords)' do
+ @request = Rack::MockRequest.new(protected_app_with_hashed_passwords)
+
+ request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response|
+ response.status.should.equal 200
+ response.body.to_s.should.equal 'Hi Alice'
+ end
+ end
+
+ specify 'should rechallenge if incorrect username given' do
+ request_with_digest_auth 'GET', '/', 'Bob', 'correct-password' do |response|
+ assert_digest_auth_challenge response
+ end
+ end
+
+ specify 'should rechallenge if incorrect password given' do
+ request_with_digest_auth 'GET', '/', 'Alice', 'wrong-password' do |response|
+ assert_digest_auth_challenge response
+ end
+ end
+
+ specify 'rechallenge if incorrect user and blank password given' do
+ request_with_digest_auth 'GET', '/', 'Bob', '' do |response|
+ assert_digest_auth_challenge response
+ end
+ end
+
+ specify 'should rechallenge with stale parameter if nonce is stale' do
+ begin
+ Rack::Auth::Digest::Nonce.time_limit = 1
+
+ request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', :wait => 2 do |response|
+ assert_digest_auth_challenge response
+ response.headers['WWW-Authenticate'].should =~ /\bstale=true\b/
+ end
+ ensure
+ Rack::Auth::Digest::Nonce.time_limit = nil
+ end
+ end
+
+ specify 'should return 400 Bad Request if incorrect qop given' do
+ request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'qop' => 'auth-int' do |response|
+ assert_bad_request response
+ end
+ end
+
+ specify 'should return 400 Bad Request if incorrect uri given' do
+ request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'uri' => '/foo' do |response|
+ assert_bad_request response
+ end
+ end
+
+ specify 'should return 400 Bad Request if different auth scheme used' do
+ request 'GET', '/', 'HTTP_AUTHORIZATION' => 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' do |response|
+ assert_bad_request response
+ end
+ end
+
+ specify 'should not require credentials for unprotected path' do
+ @request = Rack::MockRequest.new(partially_protected_app)
+ request 'GET', '/' do |response|
+ response.should.be.ok
+ end
+ end
+
+ specify 'should challenge when no credentials are specified for protected path' do
+ @request = Rack::MockRequest.new(partially_protected_app)
+ request 'GET', '/protected' do |response|
+ assert_digest_auth_challenge response
+ end
+ end
+
+ specify 'should return application output if correct credentials given for protected path' do
+ @request = Rack::MockRequest.new(partially_protected_app)
+ request_with_digest_auth 'GET', '/protected', 'Alice', 'correct-password' do |response|
+ response.status.should.equal 200
+ response.body.to_s.should.equal 'Hi Alice'
+ end
+ end
+
+ specify 'should return application output if correct credentials given for POST' do
+ request_with_digest_auth 'POST', '/', 'Alice', 'correct-password' do |response|
+ response.status.should.equal 200
+ response.body.to_s.should.equal 'Hi Alice'
+ end
+ end
+
+ specify 'should return application output if correct credentials given for PUT (using method override of POST)' do
+ @request = Rack::MockRequest.new(protected_app_with_method_override)
+ request_with_digest_auth 'POST', '/', 'Alice', 'correct-password', :input => "_method=put" do |response|
+ response.status.should.equal 200
+ response.body.to_s.should.equal 'Hi Alice'
+ end
+ end
+
+ specify 'realm as optional constructor arg' do
+ app = Rack::Auth::Digest::MD5.new(unprotected_app, realm) { true }
+ assert_equal realm, app.realm
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_builder.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_builder.rb
new file mode 100755
index 00000000000..3fad9810e3c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_builder.rb
@@ -0,0 +1,84 @@
+require 'test/spec'
+
+require 'rack/builder'
+require 'rack/mock'
+require 'rack/showexceptions'
+require 'rack/auth/basic'
+
+context "Rack::Builder" do
+ specify "chains apps by default" do
+ app = Rack::Builder.new do
+ use Rack::ShowExceptions
+ run lambda { |env| raise "bzzzt" }
+ end.to_app
+
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ end
+
+ specify "has implicit #to_app" do
+ app = Rack::Builder.new do
+ use Rack::ShowExceptions
+ run lambda { |env| raise "bzzzt" }
+ end
+
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ end
+
+ specify "supports blocks on use" do
+ app = Rack::Builder.new do
+ use Rack::ShowExceptions
+ use Rack::Auth::Basic do |username, password|
+ 'secret' == password
+ end
+
+ run lambda { |env| [200, {}, ['Hi Boss']] }
+ end
+
+ response = Rack::MockRequest.new(app).get("/")
+ response.should.be.client_error
+ response.status.should.equal 401
+
+ # with auth...
+ response = Rack::MockRequest.new(app).get("/",
+ 'HTTP_AUTHORIZATION' => 'Basic ' + ["joe:secret"].pack("m*"))
+ response.status.should.equal 200
+ response.body.to_s.should.equal 'Hi Boss'
+ end
+
+ specify "has explicit #to_app" do
+ app = Rack::Builder.app do
+ use Rack::ShowExceptions
+ run lambda { |env| raise "bzzzt" }
+ end
+
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ end
+
+ specify "apps are initialized once" do
+ app = Rack::Builder.new do
+ class AppClass
+ def initialize
+ @called = 0
+ end
+ def call(env)
+ raise "bzzzt" if @called > 0
+ @called += 1
+ [200, {'Content-Type' => 'text/plain'}, ['OK']]
+ end
+ end
+
+ use Rack::ShowExceptions
+ run AppClass.new
+ end
+
+ Rack::MockRequest.new(app).get("/").status.should.equal 200
+ Rack::MockRequest.new(app).get("/").should.be.server_error
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_camping.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_camping.rb
new file mode 100755
index 00000000000..e7597f07e0a
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_camping.rb
@@ -0,0 +1,55 @@
+require 'test/spec'
+require 'stringio'
+require 'uri'
+
+begin
+ require 'rack/mock'
+
+ $-w, w = nil, $-w # yuck
+
+ # campings dependencies also don't pull this in anymore:
+ class Object;def meta_def m,&b;(class< "foo=bar")
+
+ res.should.be.ok
+ res.body.should.equal "Data: bar"
+ end
+ end
+rescue LoadError
+ $stderr.puts "Skipping Rack::Adapter::Camping tests (Camping is required). `gem install camping` and try again."
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_cascade.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_cascade.rb
new file mode 100755
index 00000000000..cf3c29b4821
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_cascade.rb
@@ -0,0 +1,48 @@
+require 'test/spec'
+
+require 'rack/cascade'
+require 'rack/mock'
+
+require 'rack/urlmap'
+require 'rack/file'
+
+context "Rack::Cascade" do
+ docroot = File.expand_path(File.dirname(__FILE__))
+ app1 = Rack::File.new(docroot)
+
+ app2 = Rack::URLMap.new("/crash" => lambda { |env| raise "boom" })
+
+ app3 = Rack::URLMap.new("/foo" => lambda { |env|
+ [200, { "Content-Type" => "text/plain"}, [""]]})
+
+ specify "should dispatch onward on 404 by default" do
+ cascade = Rack::Cascade.new([app1, app2, app3])
+ Rack::MockRequest.new(cascade).get("/cgi/test").should.be.ok
+ Rack::MockRequest.new(cascade).get("/foo").should.be.ok
+ Rack::MockRequest.new(cascade).get("/toobad").should.be.not_found
+ Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.forbidden
+ end
+
+ specify "should dispatch onward on whatever is passed" do
+ cascade = Rack::Cascade.new([app1, app2, app3], [404, 403])
+ Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.not_found
+ end
+
+ specify "should return 404 if empty" do
+ Rack::MockRequest.new(Rack::Cascade.new([])).get('/').should.be.not_found
+ end
+
+ specify "should append new app" do
+ cascade = Rack::Cascade.new([], [404, 403])
+ Rack::MockRequest.new(cascade).get('/').should.be.not_found
+ cascade << app2
+ Rack::MockRequest.new(cascade).get('/cgi/test').should.be.not_found
+ Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.not_found
+ cascade << app1
+ Rack::MockRequest.new(cascade).get('/cgi/test').should.be.ok
+ Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.forbidden
+ Rack::MockRequest.new(cascade).get('/foo').should.be.not_found
+ cascade << app3
+ Rack::MockRequest.new(cascade).get('/foo').should.be.ok
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_cgi.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_cgi.rb
new file mode 100755
index 00000000000..df08656d06e
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_cgi.rb
@@ -0,0 +1,89 @@
+require 'test/spec'
+require 'testrequest'
+
+context "Rack::Handler::CGI" do
+ include TestRequest::Helpers
+
+ setup do
+ @host = '0.0.0.0'
+ @port = 9203
+ end
+
+ # Keep this first.
+ specify "startup" do
+ $pid = fork {
+ Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi"))
+ exec "lighttpd -D -f lighttpd.conf"
+ }
+ end
+
+ specify "should respond" do
+ sleep 1
+ lambda {
+ GET("/test")
+ }.should.not.raise
+ end
+
+ specify "should be a lighttpd" do
+ GET("/test")
+ status.should.be 200
+ response["SERVER_SOFTWARE"].should =~ /lighttpd/
+ response["HTTP_VERSION"].should.equal "HTTP/1.1"
+ response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
+ response["SERVER_PORT"].should.equal @port.to_s
+ response["SERVER_NAME"].should =~ @host
+ end
+
+ specify "should have rack headers" do
+ GET("/test")
+ response["rack.version"].should.equal [1,1]
+ response["rack.multithread"].should.be false
+ response["rack.multiprocess"].should.be true
+ response["rack.run_once"].should.be true
+ end
+
+ specify "should have CGI headers on GET" do
+ GET("/test")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.be nil
+ response["QUERY_STRING"].should.equal ""
+ response["test.postdata"].should.equal ""
+
+ GET("/test/foo?quux=1")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.equal "/foo"
+ response["QUERY_STRING"].should.equal "quux=1"
+ end
+
+ specify "should have CGI headers on POST" do
+ POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
+ status.should.equal 200
+ response["REQUEST_METHOD"].should.equal "POST"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/"
+ response["QUERY_STRING"].should.equal ""
+ response["HTTP_X_TEST_HEADER"].should.equal "42"
+ response["test.postdata"].should.equal "rack-form-data=23"
+ end
+
+ specify "should support HTTP auth" do
+ GET("/test", {:user => "ruth", :passwd => "secret"})
+ response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
+ end
+
+ specify "should set status" do
+ GET("/test?secret")
+ status.should.equal 403
+ response["rack.url_scheme"].should.equal "http"
+ end
+
+ # Keep this last.
+ specify "shutdown" do
+ Process.kill 15, $pid
+ Process.wait($pid).should.equal $pid
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_chunked.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_chunked.rb
new file mode 100755
index 00000000000..39eea4824cd
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_chunked.rb
@@ -0,0 +1,62 @@
+require 'rack/mock'
+require 'rack/chunked'
+require 'rack/utils'
+
+context "Rack::Chunked" do
+
+ before do
+ @env = Rack::MockRequest.
+ env_for('/', 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => 'GET')
+ end
+
+ specify 'chunks responses with no Content-Length' do
+ app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] }
+ response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env))
+ response.headers.should.not.include 'Content-Length'
+ response.headers['Transfer-Encoding'].should.equal 'chunked'
+ response.body.should.equal "5\r\nHello\r\n1\r\n \r\n6\r\nWorld!\r\n0\r\n\r\n"
+ end
+
+ specify 'chunks empty bodies properly' do
+ app = lambda { |env| [200, {}, []] }
+ response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env))
+ response.headers.should.not.include 'Content-Length'
+ response.headers['Transfer-Encoding'].should.equal 'chunked'
+ response.body.should.equal "0\r\n\r\n"
+ end
+
+ specify 'does not modify response when Content-Length header present' do
+ app = lambda { |env| [200, {'Content-Length'=>'12'}, ['Hello', ' ', 'World!']] }
+ status, headers, body = Rack::Chunked.new(app).call(@env)
+ status.should.equal 200
+ headers.should.not.include 'Transfer-Encoding'
+ headers.should.include 'Content-Length'
+ body.join.should.equal 'Hello World!'
+ end
+
+ specify 'does not modify response when client is HTTP/1.0' do
+ app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] }
+ @env['HTTP_VERSION'] = 'HTTP/1.0'
+ status, headers, body = Rack::Chunked.new(app).call(@env)
+ status.should.equal 200
+ headers.should.not.include 'Transfer-Encoding'
+ body.join.should.equal 'Hello World!'
+ end
+
+ specify 'does not modify response when Transfer-Encoding header already present' do
+ app = lambda { |env| [200, {'Transfer-Encoding' => 'identity'}, ['Hello', ' ', 'World!']] }
+ status, headers, body = Rack::Chunked.new(app).call(@env)
+ status.should.equal 200
+ headers['Transfer-Encoding'].should.equal 'identity'
+ body.join.should.equal 'Hello World!'
+ end
+
+ [100, 204, 304].each do |status_code|
+ specify "does not modify response when status code is #{status_code}" do
+ app = lambda { |env| [status_code, {}, []] }
+ status, headers, body = Rack::Chunked.new(app).call(@env)
+ status.should.equal status_code
+ headers.should.not.include 'Transfer-Encoding'
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_commonlogger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_commonlogger.rb
new file mode 100755
index 00000000000..46a72e86be8
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_commonlogger.rb
@@ -0,0 +1,61 @@
+require 'test/spec'
+require 'stringio'
+
+require 'rack/commonlogger'
+require 'rack/lobster'
+require 'rack/mock'
+
+context "Rack::CommonLogger" do
+ app = lambda { |env|
+ [200,
+ {"Content-Type" => "text/html", "Content-Length" => length.to_s},
+ [obj]]}
+ app_without_length = lambda { |env|
+ [200,
+ {"Content-Type" => "text/html"},
+ []]}
+ app_with_zero_length = lambda { |env|
+ [200,
+ {"Content-Type" => "text/html", "Content-Length" => "0"},
+ []]}
+
+ specify "should log to rack.errors by default" do
+ res = Rack::MockRequest.new(Rack::CommonLogger.new(app)).get("/")
+
+ res.errors.should.not.be.empty
+ res.errors.should =~ /"GET \/ " 200 #{length} /
+ end
+
+ specify "should log to anything with +write+" do
+ log = StringIO.new
+ res = Rack::MockRequest.new(Rack::CommonLogger.new(app, log)).get("/")
+
+ log.string.should =~ /"GET \/ " 200 #{length} /
+ end
+
+ specify "should log - content length if header is missing" do
+ res = Rack::MockRequest.new(Rack::CommonLogger.new(app_without_length)).get("/")
+
+ res.errors.should.not.be.empty
+ res.errors.should =~ /"GET \/ " 200 - /
+ end
+
+ specify "should log - content length if header is zero" do
+ res = Rack::MockRequest.new(Rack::CommonLogger.new(app_with_zero_length)).get("/")
+
+ res.errors.should.not.be.empty
+ res.errors.should =~ /"GET \/ " 200 - /
+ end
+
+ def length
+ self.class.length
+ end
+
+ def self.length
+ 123
+ end
+
+ def self.obj
+ "hello world"
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_conditionalget.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_conditionalget.rb
new file mode 100755
index 00000000000..ca34cc922c0
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_conditionalget.rb
@@ -0,0 +1,41 @@
+require 'test/spec'
+require 'time'
+
+require 'rack/mock'
+require 'rack/conditionalget'
+
+context "Rack::ConditionalGet" do
+ specify "should set a 304 status and truncate body when If-Modified-Since hits" do
+ timestamp = Time.now.httpdate
+ app = Rack::ConditionalGet.new(lambda { |env|
+ [200, {'Last-Modified'=>timestamp}, ['TEST']] })
+
+ response = Rack::MockRequest.new(app).
+ get("/", 'HTTP_IF_MODIFIED_SINCE' => timestamp)
+
+ response.status.should.equal 304
+ response.body.should.be.empty
+ end
+
+ specify "should set a 304 status and truncate body when If-None-Match hits" do
+ app = Rack::ConditionalGet.new(lambda { |env|
+ [200, {'Etag'=>'1234'}, ['TEST']] })
+
+ response = Rack::MockRequest.new(app).
+ get("/", 'HTTP_IF_NONE_MATCH' => '1234')
+
+ response.status.should.equal 304
+ response.body.should.be.empty
+ end
+
+ specify "should not affect non-GET/HEAD requests" do
+ app = Rack::ConditionalGet.new(lambda { |env|
+ [200, {'Etag'=>'1234'}, ['TEST']] })
+
+ response = Rack::MockRequest.new(app).
+ post("/", 'HTTP_IF_NONE_MATCH' => '1234')
+
+ response.status.should.equal 200
+ response.body.should.equal 'TEST'
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_config.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_config.rb
new file mode 100755
index 00000000000..a508ea4beb5
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_config.rb
@@ -0,0 +1,24 @@
+require 'test/spec'
+require 'rack/mock'
+require 'rack/builder'
+require 'rack/content_length'
+require 'rack/config'
+
+context "Rack::Config" do
+
+ specify "should accept a block that modifies the environment" do
+ app = Rack::Builder.new do
+ use Rack::Lint
+ use Rack::ContentLength
+ use Rack::Config do |env|
+ env['greeting'] = 'hello'
+ end
+ run lambda { |env|
+ [200, {'Content-Type' => 'text/plain'}, [env['greeting'] || '']]
+ }
+ end
+ response = Rack::MockRequest.new(app).get('/')
+ response.body.should.equal('hello')
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_content_length.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_content_length.rb
new file mode 100755
index 00000000000..7db9345f860
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_content_length.rb
@@ -0,0 +1,43 @@
+require 'rack/mock'
+require 'rack/content_length'
+
+context "Rack::ContentLength" do
+ specify "sets Content-Length on String bodies if none is set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
+ response = Rack::ContentLength.new(app).call({})
+ response[1]['Content-Length'].should.equal '13'
+ end
+
+ specify "sets Content-Length on Array bodies if none is set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] }
+ response = Rack::ContentLength.new(app).call({})
+ response[1]['Content-Length'].should.equal '13'
+ end
+
+ specify "does not set Content-Length on variable length bodies" do
+ body = lambda { "Hello World!" }
+ def body.each ; yield call ; end
+
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] }
+ response = Rack::ContentLength.new(app).call({})
+ response[1]['Content-Length'].should.be.nil
+ end
+
+ specify "does not change Content-Length if it is already set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'Content-Length' => '1'}, "Hello, World!"] }
+ response = Rack::ContentLength.new(app).call({})
+ response[1]['Content-Length'].should.equal '1'
+ end
+
+ specify "does not set Content-Length on 304 responses" do
+ app = lambda { |env| [304, {'Content-Type' => 'text/plain'}, []] }
+ response = Rack::ContentLength.new(app).call({})
+ response[1]['Content-Length'].should.equal nil
+ end
+
+ specify "does not set Content-Length when Transfer-Encoding is chunked" do
+ app = lambda { |env| [200, {'Transfer-Encoding' => 'chunked'}, []] }
+ response = Rack::ContentLength.new(app).call({})
+ response[1]['Content-Length'].should.equal nil
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_content_type.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_content_type.rb
new file mode 100755
index 00000000000..9975b94d62b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_content_type.rb
@@ -0,0 +1,30 @@
+require 'rack/mock'
+require 'rack/content_type'
+
+context "Rack::ContentType" do
+ specify "sets Content-Type to default text/html if none is set" do
+ app = lambda { |env| [200, {}, "Hello, World!"] }
+ status, headers, body = Rack::ContentType.new(app).call({})
+ headers['Content-Type'].should.equal 'text/html'
+ end
+
+ specify "sets Content-Type to chosen default if none is set" do
+ app = lambda { |env| [200, {}, "Hello, World!"] }
+ status, headers, body =
+ Rack::ContentType.new(app, 'application/octet-stream').call({})
+ headers['Content-Type'].should.equal 'application/octet-stream'
+ end
+
+ specify "does not change Content-Type if it is already set" do
+ app = lambda { |env| [200, {'Content-Type' => 'foo/bar'}, "Hello, World!"] }
+ status, headers, body = Rack::ContentType.new(app).call({})
+ headers['Content-Type'].should.equal 'foo/bar'
+ end
+
+ specify "case insensitive detection of Content-Type" do
+ app = lambda { |env| [200, {'CONTENT-Type' => 'foo/bar'}, "Hello, World!"] }
+ status, headers, body = Rack::ContentType.new(app).call({})
+ headers.to_a.select { |k,v| k.downcase == "content-type" }.
+ should.equal [["CONTENT-Type","foo/bar"]]
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_deflater.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_deflater.rb
new file mode 100755
index 00000000000..c9bb318942f
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_deflater.rb
@@ -0,0 +1,127 @@
+require 'test/spec'
+
+require 'rack/mock'
+require 'rack/deflater'
+require 'stringio'
+require 'time' # for Time#httpdate
+
+context "Rack::Deflater" do
+ def build_response(status, body, accept_encoding, headers = {})
+ body = [body] if body.respond_to? :to_str
+ app = lambda { |env| [status, {}, body] }
+ request = Rack::MockRequest.env_for("", headers.merge("HTTP_ACCEPT_ENCODING" => accept_encoding))
+ response = Rack::Deflater.new(app).call(request)
+
+ return response
+ end
+
+ specify "should be able to deflate bodies that respond to each" do
+ body = Object.new
+ class << body; def each; yield("foo"); yield("bar"); end; end
+
+ response = build_response(200, body, "deflate")
+
+ response[0].should.equal(200)
+ response[1].should.equal({
+ "Content-Encoding" => "deflate",
+ "Vary" => "Accept-Encoding"
+ })
+ buf = ''
+ response[2].each { |part| buf << part }
+ buf.should.equal("K\313\317OJ,\002\000")
+ end
+
+ # TODO: This is really just a special case of the above...
+ specify "should be able to deflate String bodies" do
+ response = build_response(200, "Hello world!", "deflate")
+
+ response[0].should.equal(200)
+ response[1].should.equal({
+ "Content-Encoding" => "deflate",
+ "Vary" => "Accept-Encoding"
+ })
+ buf = ''
+ response[2].each { |part| buf << part }
+ buf.should.equal("\363H\315\311\311W(\317/\312IQ\004\000")
+ end
+
+ specify "should be able to gzip bodies that respond to each" do
+ body = Object.new
+ class << body; def each; yield("foo"); yield("bar"); end; end
+
+ response = build_response(200, body, "gzip")
+
+ response[0].should.equal(200)
+ response[1].should.equal({
+ "Content-Encoding" => "gzip",
+ "Vary" => "Accept-Encoding",
+ })
+
+ buf = ''
+ response[2].each { |part| buf << part }
+ io = StringIO.new(buf)
+ gz = Zlib::GzipReader.new(io)
+ gz.read.should.equal("foobar")
+ gz.close
+ end
+
+ specify "should be able to fallback to no deflation" do
+ response = build_response(200, "Hello world!", "superzip")
+
+ response[0].should.equal(200)
+ response[1].should.equal({ "Vary" => "Accept-Encoding" })
+ response[2].should.equal(["Hello world!"])
+ end
+
+ specify "should be able to skip when there is no response entity body" do
+ response = build_response(304, [], "gzip")
+
+ response[0].should.equal(304)
+ response[1].should.equal({})
+ response[2].should.equal([])
+ end
+
+ specify "should handle the lack of an acceptable encoding" do
+ response1 = build_response(200, "Hello world!", "identity;q=0", "PATH_INFO" => "/")
+ response1[0].should.equal(406)
+ response1[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "71"})
+ response1[2].should.equal(["An acceptable encoding for the requested resource / could not be found."])
+
+ response2 = build_response(200, "Hello world!", "identity;q=0", "SCRIPT_NAME" => "/foo", "PATH_INFO" => "/bar")
+ response2[0].should.equal(406)
+ response2[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "78"})
+ response2[2].should.equal(["An acceptable encoding for the requested resource /foo/bar could not be found."])
+ end
+
+ specify "should handle gzip response with Last-Modified header" do
+ last_modified = Time.now.httpdate
+
+ app = lambda { |env| [200, { "Last-Modified" => last_modified }, ["Hello World!"]] }
+ request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip")
+ response = Rack::Deflater.new(app).call(request)
+
+ response[0].should.equal(200)
+ response[1].should.equal({
+ "Content-Encoding" => "gzip",
+ "Vary" => "Accept-Encoding",
+ "Last-Modified" => last_modified
+ })
+
+ buf = ''
+ response[2].each { |part| buf << part }
+ io = StringIO.new(buf)
+ gz = Zlib::GzipReader.new(io)
+ gz.read.should.equal("Hello World!")
+ gz.close
+ end
+
+ specify "should do nothing when no-transform Cache-Control directive present" do
+ app = lambda { |env| [200, {'Cache-Control' => 'no-transform'}, ['Hello World!']] }
+ request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip")
+ response = Rack::Deflater.new(app).call(request)
+
+ response[0].should.equal(200)
+ response[1].should.not.include "Content-Encoding"
+ response[2].join.should.equal("Hello World!")
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_directory.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_directory.rb
new file mode 100755
index 00000000000..d255c91da5c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_directory.rb
@@ -0,0 +1,61 @@
+require 'test/spec'
+
+require 'rack/directory'
+require 'rack/lint'
+
+require 'rack/mock'
+
+context "Rack::Directory" do
+ DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT
+ FILE_CATCH = proc{|env| [200, {'Content-Type'=>'text/plain', "Content-Length" => "7"}, ['passed!']] }
+ app = Rack::Directory.new DOCROOT, FILE_CATCH
+
+ specify "serves directory indices" do
+ res = Rack::MockRequest.new(Rack::Lint.new(app)).
+ get("/cgi/")
+
+ res.should.be.ok
+ res.should =~ //
+ end
+
+ specify "passes to app if file found" do
+ res = Rack::MockRequest.new(Rack::Lint.new(app)).
+ get("/cgi/test")
+
+ res.should.be.ok
+ res.should =~ /passed!/
+ end
+
+ specify "serves uri with URL encoded filenames" do
+ res = Rack::MockRequest.new(Rack::Lint.new(app)).
+ get("/%63%67%69/") # "/cgi/test"
+
+ res.should.be.ok
+ res.should =~ //
+
+ res = Rack::MockRequest.new(Rack::Lint.new(app)).
+ get("/cgi/%74%65%73%74") # "/cgi/test"
+
+ res.should.be.ok
+ res.should =~ /passed!/
+ end
+
+ specify "does not allow directory traversal" do
+ res = Rack::MockRequest.new(Rack::Lint.new(app)).
+ get("/cgi/../test")
+
+ res.should.be.forbidden
+
+ res = Rack::MockRequest.new(Rack::Lint.new(app)).
+ get("/cgi/%2E%2E/test")
+
+ res.should.be.forbidden
+ end
+
+ specify "404s if it can't find the file" do
+ res = Rack::MockRequest.new(Rack::Lint.new(app)).
+ get("/cgi/blubb")
+
+ res.should.be.not_found
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_etag.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_etag.rb
new file mode 100755
index 00000000000..73cd31ac02e
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_etag.rb
@@ -0,0 +1,17 @@
+require 'test/spec'
+require 'rack/mock'
+require 'rack/etag'
+
+context "Rack::ETag" do
+ specify "sets ETag if none is set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] }
+ response = Rack::ETag.new(app).call({})
+ response[1]['ETag'].should.equal "\"65a8e27d8879283831b664bd8b7f0ad4\""
+ end
+
+ specify "does not change ETag if it is already set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'ETag' => '"abc"'}, ["Hello, World!"]] }
+ response = Rack::ETag.new(app).call({})
+ response[1]['ETag'].should.equal "\"abc\""
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_fastcgi.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_fastcgi.rb
new file mode 100755
index 00000000000..1ae55ace69b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_fastcgi.rb
@@ -0,0 +1,89 @@
+require 'test/spec'
+require 'testrequest'
+
+context "Rack::Handler::FastCGI" do
+ include TestRequest::Helpers
+
+ setup do
+ @host = '0.0.0.0'
+ @port = 9203
+ end
+
+ # Keep this first.
+ specify "startup" do
+ $pid = fork {
+ Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi"))
+ exec "lighttpd -D -f lighttpd.conf"
+ }
+ end
+
+ specify "should respond" do
+ sleep 1
+ lambda {
+ GET("/test.fcgi")
+ }.should.not.raise
+ end
+
+ specify "should be a lighttpd" do
+ GET("/test.fcgi")
+ status.should.be 200
+ response["SERVER_SOFTWARE"].should =~ /lighttpd/
+ response["HTTP_VERSION"].should.equal "HTTP/1.1"
+ response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
+ response["SERVER_PORT"].should.equal @port.to_s
+ response["SERVER_NAME"].should =~ @host
+ end
+
+ specify "should have rack headers" do
+ GET("/test.fcgi")
+ response["rack.version"].should.equal [1,1]
+ response["rack.multithread"].should.be false
+ response["rack.multiprocess"].should.be true
+ response["rack.run_once"].should.be false
+ end
+
+ specify "should have CGI headers on GET" do
+ GET("/test.fcgi")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test.fcgi"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.equal ""
+ response["QUERY_STRING"].should.equal ""
+ response["test.postdata"].should.equal ""
+
+ GET("/test.fcgi/foo?quux=1")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test.fcgi"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.equal "/foo"
+ response["QUERY_STRING"].should.equal "quux=1"
+ end
+
+ specify "should have CGI headers on POST" do
+ POST("/test.fcgi", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
+ status.should.equal 200
+ response["REQUEST_METHOD"].should.equal "POST"
+ response["SCRIPT_NAME"].should.equal "/test.fcgi"
+ response["REQUEST_PATH"].should.equal "/"
+ response["QUERY_STRING"].should.equal ""
+ response["HTTP_X_TEST_HEADER"].should.equal "42"
+ response["test.postdata"].should.equal "rack-form-data=23"
+ end
+
+ specify "should support HTTP auth" do
+ GET("/test.fcgi", {:user => "ruth", :passwd => "secret"})
+ response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
+ end
+
+ specify "should set status" do
+ GET("/test.fcgi?secret")
+ status.should.equal 403
+ response["rack.url_scheme"].should.equal "http"
+ end
+
+ # Keep this last.
+ specify "shutdown" do
+ Process.kill 15, $pid
+ Process.wait($pid).should.equal $pid
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_file.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_file.rb
new file mode 100755
index 00000000000..0a2f8ee81c8
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_file.rb
@@ -0,0 +1,75 @@
+require 'test/spec'
+
+require 'rack/file'
+require 'rack/lint'
+
+require 'rack/mock'
+
+context "Rack::File" do
+ DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT
+
+ specify "serves files" do
+ res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
+ get("/cgi/test")
+
+ res.should.be.ok
+ res.should =~ /ruby/
+ end
+
+ specify "sets Last-Modified header" do
+ res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
+ get("/cgi/test")
+
+ path = File.join(DOCROOT, "/cgi/test")
+
+ res.should.be.ok
+ res["Last-Modified"].should.equal File.mtime(path).httpdate
+ end
+
+ specify "serves files with URL encoded filenames" do
+ res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
+ get("/cgi/%74%65%73%74") # "/cgi/test"
+
+ res.should.be.ok
+ res.should =~ /ruby/
+ end
+
+ specify "does not allow directory traversal" do
+ res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
+ get("/cgi/../test")
+
+ res.should.be.forbidden
+ end
+
+ specify "does not allow directory traversal with encoded periods" do
+ res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
+ get("/%2E%2E/README")
+
+ res.should.be.forbidden
+ end
+
+ specify "404s if it can't find the file" do
+ res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
+ get("/cgi/blubb")
+
+ res.should.be.not_found
+ end
+
+ specify "detects SystemCallErrors" do
+ res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
+ get("/cgi")
+
+ res.should.be.not_found
+ end
+
+ specify "returns bodies that respond to #to_path" do
+ env = Rack::MockRequest.env_for("/cgi/test")
+ status, headers, body = Rack::File.new(DOCROOT).call(env)
+
+ path = File.join(DOCROOT, "/cgi/test")
+
+ status.should.equal 200
+ body.should.respond_to :to_path
+ body.to_path.should.equal path
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_handler.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_handler.rb
new file mode 100755
index 00000000000..fcf19b78012
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_handler.rb
@@ -0,0 +1,43 @@
+require 'test/spec'
+
+require 'rack/handler'
+
+class Rack::Handler::Lobster; end
+class RockLobster; end
+
+context "Rack::Handler" do
+ specify "has registered default handlers" do
+ Rack::Handler.get('cgi').should.equal Rack::Handler::CGI
+ Rack::Handler.get('fastcgi').should.equal Rack::Handler::FastCGI
+ Rack::Handler.get('mongrel').should.equal Rack::Handler::Mongrel
+ Rack::Handler.get('webrick').should.equal Rack::Handler::WEBrick
+ end
+
+ specify "handler that doesn't exist should raise a NameError" do
+ lambda {
+ Rack::Handler.get('boom')
+ }.should.raise(NameError)
+ end
+
+ specify "should get unregistered, but already required, handler by name" do
+ Rack::Handler.get('Lobster').should.equal Rack::Handler::Lobster
+ end
+
+ specify "should register custom handler" do
+ Rack::Handler.register('rock_lobster', 'RockLobster')
+ Rack::Handler.get('rock_lobster').should.equal RockLobster
+ end
+
+ specify "should not need registration for properly coded handlers even if not already required" do
+ begin
+ $:.push "test/unregistered_handler"
+ Rack::Handler.get('Unregistered').should.equal Rack::Handler::Unregistered
+ lambda {
+ Rack::Handler.get('UnRegistered')
+ }.should.raise(NameError)
+ Rack::Handler.get('UnregisteredLongOne').should.equal Rack::Handler::UnregisteredLongOne
+ ensure
+ $:.delete "test/unregistered_handler"
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_head.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_head.rb
new file mode 100755
index 00000000000..48d3f81ff2a
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_head.rb
@@ -0,0 +1,30 @@
+require 'rack/head'
+require 'rack/mock'
+
+context "Rack::Head" do
+ def test_response(headers = {})
+ app = lambda { |env| [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] }
+ request = Rack::MockRequest.env_for("/", headers)
+ response = Rack::Head.new(app).call(request)
+
+ return response
+ end
+
+ specify "passes GET, POST, PUT, DELETE, OPTIONS, TRACE requests" do
+ %w[GET POST PUT DELETE OPTIONS TRACE].each do |type|
+ resp = test_response("REQUEST_METHOD" => type)
+
+ resp[0].should.equal(200)
+ resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"})
+ resp[2].should.equal(["foo"])
+ end
+ end
+
+ specify "removes body from HEAD requests" do
+ resp = test_response("REQUEST_METHOD" => "HEAD")
+
+ resp[0].should.equal(200)
+ resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"})
+ resp[2].should.equal([])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lint.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lint.rb
new file mode 100755
index 00000000000..bbf75c17a40
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lint.rb
@@ -0,0 +1,528 @@
+require 'test/spec'
+require 'stringio'
+
+require 'rack/lint'
+require 'rack/mock'
+
+context "Rack::Lint" do
+ def env(*args)
+ Rack::MockRequest.env_for("/", *args)
+ end
+
+ specify "passes valid request" do
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]]
+ }).call(env({}))
+ }.should.not.raise
+ end
+
+ specify "notices fatal errors" do
+ lambda { Rack::Lint.new(nil).call }.should.raise(Rack::Lint::LintError).
+ message.should.match(/No env given/)
+ end
+
+ specify "notices environment errors" do
+ lambda { Rack::Lint.new(nil).call 5 }.should.raise(Rack::Lint::LintError).
+ message.should.match(/not a Hash/)
+
+ lambda {
+ e = env
+ e.delete("REQUEST_METHOD")
+ Rack::Lint.new(nil).call(e)
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/missing required key REQUEST_METHOD/)
+
+ lambda {
+ e = env
+ e.delete("SERVER_NAME")
+ Rack::Lint.new(nil).call(e)
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/missing required key SERVER_NAME/)
+
+
+ lambda {
+ Rack::Lint.new(nil).call(env("HTTP_CONTENT_TYPE" => "text/plain"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/contains HTTP_CONTENT_TYPE/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("HTTP_CONTENT_LENGTH" => "42"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/contains HTTP_CONTENT_LENGTH/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("FOO" => Object.new))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/non-string value/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("rack.version" => "0.2"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must be an Array/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("rack.url_scheme" => "gopher"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/url_scheme unknown/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("rack.session" => []))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.equal("session [] must respond to store and []=")
+
+ lambda {
+ Rack::Lint.new(nil).call(env("rack.logger" => []))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.equal("logger [] must respond to info")
+
+ lambda {
+ Rack::Lint.new(nil).call(env("REQUEST_METHOD" => "FUCKUP?"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/REQUEST_METHOD/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "howdy"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must start with/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("PATH_INFO" => "../foo"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must start with/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("CONTENT_LENGTH" => "xcii"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/Invalid CONTENT_LENGTH/)
+
+ lambda {
+ e = env
+ e.delete("PATH_INFO")
+ e.delete("SCRIPT_NAME")
+ Rack::Lint.new(nil).call(e)
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/One of .* must be set/)
+
+ lambda {
+ Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "/"))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/cannot be .* make it ''/)
+ end
+
+ specify "notices input errors" do
+ lambda {
+ Rack::Lint.new(nil).call(env("rack.input" => ""))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/does not respond to #gets/)
+
+ lambda {
+ input = Object.new
+ def input.binmode?
+ false
+ end
+ Rack::Lint.new(nil).call(env("rack.input" => input))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/is not opened in binary mode/)
+
+ lambda {
+ input = Object.new
+ def input.external_encoding
+ result = Object.new
+ def result.name
+ "US-ASCII"
+ end
+ result
+ end
+ Rack::Lint.new(nil).call(env("rack.input" => input))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/does not have ASCII-8BIT as its external encoding/)
+ end
+
+ specify "notices error errors" do
+ lambda {
+ Rack::Lint.new(nil).call(env("rack.errors" => ""))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/does not respond to #puts/)
+ end
+
+ specify "notices status errors" do
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ ["cc", {}, ""]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must be >=100 seen as integer/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [42, {}, ""]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must be >=100 seen as integer/)
+ end
+
+ specify "notices header errors" do
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, Object.new, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.equal("headers object should respond to #each, but doesn't (got Object as headers)")
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {true=>false}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.equal("header key must be a string, was TrueClass")
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Status" => "404"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must not contain Status/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Content-Type:" => "text/plain"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must not contain :/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Content-" => "text/plain"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/must not end/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"..%%quark%%.." => "text/plain"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.equal("invalid header name: ..%%quark%%..")
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Foo" => Object.new}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.equal("a header value must be a String, but the value of 'Foo' is a Object")
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Foo" => [1, 2, 3]}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.equal("a header value must be a String, but the value of 'Foo' is a Array")
+
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Foo-Bar" => "text\000plain"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/invalid header/)
+
+ # line ends (010) should be allowed in header values.
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Foo-Bar" => "one\ntwo\nthree", "Content-Length" => "0", "Content-Type" => "text/plain" }, []]
+ }).call(env({}))
+ }.should.not.raise(Rack::Lint::LintError)
+ end
+
+ specify "notices content-type errors" do
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/No Content-Type/)
+
+ [100, 101, 204, 304].each do |status|
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [status, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/Content-Type header found/)
+ end
+ end
+
+ specify "notices content-length errors" do
+ [100, 101, 204, 304].each do |status|
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [status, {"Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/Content-Length header found/)
+ end
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Content-type" => "text/plain", "Content-Length" => "1"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/Content-Length header was 1, but should be 0/)
+ end
+
+ specify "notices body errors" do
+ lambda {
+ status, header, body = Rack::Lint.new(lambda { |env|
+ [200, {"Content-type" => "text/plain","Content-length" => "3"}, [1,2,3]]
+ }).call(env({}))
+ body.each { |part| }
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/yielded non-string/)
+ end
+
+ specify "notices input handling errors" do
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].gets("\r\n")
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/gets called with arguments/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(1, 2, 3)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/read called with too many arguments/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read("foo")
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/read called with non-integer and non-nil length/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(-1)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/read called with a negative length/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(nil, nil)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/read called with non-String buffer/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(nil, 1)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/read called with non-String buffer/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].rewind(0)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/rewind called with arguments/)
+
+ weirdio = Object.new
+ class << weirdio
+ def gets
+ 42
+ end
+
+ def read
+ 23
+ end
+
+ def each
+ yield 23
+ yield 42
+ end
+
+ def rewind
+ raise Errno::ESPIPE, "Errno::ESPIPE"
+ end
+ end
+
+ eof_weirdio = Object.new
+ class << eof_weirdio
+ def gets
+ nil
+ end
+
+ def read(*args)
+ nil
+ end
+
+ def each
+ end
+
+ def rewind
+ end
+ end
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].gets
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env("rack.input" => weirdio))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/gets didn't return a String/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].each { |x| }
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env("rack.input" => weirdio))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/each didn't yield a String/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env("rack.input" => weirdio))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/read didn't return nil or a String/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env("rack.input" => eof_weirdio))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/read\(nil\) returned nil on EOF/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].rewind
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env("rack.input" => weirdio))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/rewind raised Errno::ESPIPE/)
+
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].close
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/close must not be called/)
+ end
+
+ specify "notices error handling errors" do
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.errors"].write(42)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/write not called with a String/)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.errors"].close
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/close must not be called/)
+ end
+
+ specify "notices HEAD errors" do
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Content-type" => "test/plain", "Content-length" => "3"}, []]
+ }).call(env({"REQUEST_METHOD" => "HEAD"}))
+ }.should.not.raise
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]]
+ }).call(env({"REQUEST_METHOD" => "HEAD"}))
+ }.should.raise(Rack::Lint::LintError).
+ message.should.match(/body was given for HEAD/)
+ end
+
+ specify "passes valid read calls" do
+ hello_str = "hello world"
+ hello_str.force_encoding("ASCII-8BIT") if hello_str.respond_to? :force_encoding
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({"rack.input" => StringIO.new(hello_str)}))
+ }.should.not.raise(Rack::Lint::LintError)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(0)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({"rack.input" => StringIO.new(hello_str)}))
+ }.should.not.raise(Rack::Lint::LintError)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(1)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({"rack.input" => StringIO.new(hello_str)}))
+ }.should.not.raise(Rack::Lint::LintError)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(nil)
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({"rack.input" => StringIO.new(hello_str)}))
+ }.should.not.raise(Rack::Lint::LintError)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(nil, '')
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({"rack.input" => StringIO.new(hello_str)}))
+ }.should.not.raise(Rack::Lint::LintError)
+
+ lambda {
+ Rack::Lint.new(lambda { |env|
+ env["rack.input"].read(1, '')
+ [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
+ }).call(env({"rack.input" => StringIO.new(hello_str)}))
+ }.should.not.raise(Rack::Lint::LintError)
+ end
+end
+
+context "Rack::Lint::InputWrapper" do
+ specify "delegates :size to underlying IO object" do
+ class IOMock
+ def size
+ 101
+ end
+ end
+
+ wrapper = Rack::Lint::InputWrapper.new(IOMock.new)
+ wrapper.size.should == 101
+ end
+
+ specify "delegates :rewind to underlying IO object" do
+ io = StringIO.new("123")
+ wrapper = Rack::Lint::InputWrapper.new(io)
+ wrapper.read.should.equal "123"
+ wrapper.read.should.equal ""
+ wrapper.rewind
+ wrapper.read.should.equal "123"
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lobster.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lobster.rb
new file mode 100755
index 00000000000..7be267a28c0
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lobster.rb
@@ -0,0 +1,45 @@
+require 'test/spec'
+
+require 'rack/lobster'
+require 'rack/mock'
+
+context "Rack::Lobster::LambdaLobster" do
+ specify "should be a single lambda" do
+ Rack::Lobster::LambdaLobster.should.be.kind_of Proc
+ end
+
+ specify "should look like a lobster" do
+ res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/")
+ res.should.be.ok
+ res.body.should.include "(,(,,(,,,("
+ res.body.should.include "?flip"
+ end
+
+ specify "should be flippable" do
+ res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/?flip")
+ res.should.be.ok
+ res.body.should.include "(,,,(,,(,("
+ end
+end
+
+context "Rack::Lobster" do
+ specify "should look like a lobster" do
+ res = Rack::MockRequest.new(Rack::Lobster.new).get("/")
+ res.should.be.ok
+ res.body.should.include "(,(,,(,,,("
+ res.body.should.include "?flip"
+ res.body.should.include "crash"
+ end
+
+ specify "should be flippable" do
+ res = Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=left")
+ res.should.be.ok
+ res.body.should.include "(,,,(,,(,("
+ end
+
+ specify "should provide crashing for testing purposes" do
+ lambda {
+ Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=crash")
+ }.should.raise
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lock.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lock.rb
new file mode 100755
index 00000000000..18af2b2347e
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_lock.rb
@@ -0,0 +1,38 @@
+require 'test/spec'
+
+require 'rack/mock'
+require 'rack/lock'
+
+context "Rack::Lock" do
+ class Lock
+ attr_reader :synchronized
+
+ def initialize
+ @synchronized = false
+ end
+
+ def synchronize
+ @synchronized = true
+ yield
+ end
+ end
+
+ specify "should call synchronize on lock" do
+ lock = Lock.new
+ env = Rack::MockRequest.env_for("/")
+ app = Rack::Lock.new(lambda { |env| }, lock)
+ lock.synchronized.should.equal false
+ app.call(env)
+ lock.synchronized.should.equal true
+ end
+
+ specify "should set multithread flag to false" do
+ app = Rack::Lock.new(lambda { |env| env['rack.multithread'] })
+ app.call(Rack::MockRequest.env_for("/")).should.equal false
+ end
+
+ specify "should reset original multithread flag when exiting lock" do
+ app = Rack::Lock.new(lambda { |env| env })
+ app.call(Rack::MockRequest.env_for("/"))['rack.multithread'].should.equal true
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_logger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_logger.rb
new file mode 100755
index 00000000000..2033006774e
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_logger.rb
@@ -0,0 +1,21 @@
+require 'rack/logger'
+require 'rack/lint'
+require 'stringio'
+
+context "Rack::Logger" do
+ specify "logs to rack.errors" do
+ app = lambda { |env|
+ log = env['rack.logger']
+ log.debug("Created logger")
+ log.info("Program started")
+ log.warn("Nothing to do!")
+
+ [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]]
+ }
+
+ errors = StringIO.new
+ Rack::Logger.new(app).call({'rack.errors' => errors})
+ errors.string.should.match "Program started"
+ errors.string.should.match "Nothing to do"
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_methodoverride.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_methodoverride.rb
new file mode 100755
index 00000000000..57452394c31
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_methodoverride.rb
@@ -0,0 +1,60 @@
+require 'test/spec'
+
+require 'rack/mock'
+require 'rack/methodoverride'
+require 'stringio'
+
+context "Rack::MethodOverride" do
+ specify "should not affect GET requests" do
+ env = Rack::MockRequest.env_for("/?_method=delete", :method => "GET")
+ app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
+ req = app.call(env)
+
+ req.env["REQUEST_METHOD"].should.equal "GET"
+ end
+
+ specify "_method parameter should modify REQUEST_METHOD for POST requests" do
+ env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=put")
+ app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
+ req = app.call(env)
+
+ req.env["REQUEST_METHOD"].should.equal "PUT"
+ end
+
+ specify "X-HTTP-Method-Override header should modify REQUEST_METHOD for POST requests" do
+ env = Rack::MockRequest.env_for("/",
+ :method => "POST",
+ "HTTP_X_HTTP_METHOD_OVERRIDE" => "PUT"
+ )
+ app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
+ req = app.call(env)
+
+ req.env["REQUEST_METHOD"].should.equal "PUT"
+ end
+
+ specify "should not modify REQUEST_METHOD if the method is unknown" do
+ env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=foo")
+ app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
+ req = app.call(env)
+
+ req.env["REQUEST_METHOD"].should.equal "POST"
+ end
+
+ specify "should not modify REQUEST_METHOD when _method is nil" do
+ env = Rack::MockRequest.env_for("/", :method => "POST", :input => "foo=bar")
+ app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
+ req = app.call(env)
+
+ req.env["REQUEST_METHOD"].should.equal "POST"
+ end
+
+ specify "should store the original REQUEST_METHOD prior to overriding" do
+ env = Rack::MockRequest.env_for("/",
+ :method => "POST",
+ :input => "_method=options")
+ app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
+ req = app.call(env)
+
+ req.env["rack.methodoverride.original_method"].should.equal "POST"
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_mock.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_mock.rb
new file mode 100755
index 00000000000..a03bedc21c5
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_mock.rb
@@ -0,0 +1,243 @@
+require 'yaml'
+require 'rack/mock'
+require 'rack/request'
+require 'rack/response'
+
+app = lambda { |env|
+ req = Rack::Request.new(env)
+
+ env["mock.postdata"] = env["rack.input"].read
+ if req.GET["error"]
+ env["rack.errors"].puts req.GET["error"]
+ env["rack.errors"].flush
+ end
+
+ Rack::Response.new(env.to_yaml,
+ req.GET["status"] || 200,
+ "Content-Type" => "text/yaml").finish
+}
+
+context "Rack::MockRequest" do
+ specify "should return a MockResponse" do
+ res = Rack::MockRequest.new(app).get("")
+ res.should.be.kind_of Rack::MockResponse
+ end
+
+ specify "should be able to only return the environment" do
+ env = Rack::MockRequest.env_for("")
+ env.should.be.kind_of Hash
+ env.should.include "rack.version"
+ end
+
+ specify "should provide sensible defaults" do
+ res = Rack::MockRequest.new(app).request
+
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+ env["SERVER_NAME"].should.equal "example.org"
+ env["SERVER_PORT"].should.equal "80"
+ env["QUERY_STRING"].should.equal ""
+ env["PATH_INFO"].should.equal "/"
+ env["SCRIPT_NAME"].should.equal ""
+ env["rack.url_scheme"].should.equal "http"
+ env["mock.postdata"].should.be.empty
+ end
+
+ specify "should allow GET/POST/PUT/DELETE" do
+ res = Rack::MockRequest.new(app).get("", :input => "foo")
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+
+ res = Rack::MockRequest.new(app).post("", :input => "foo")
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "POST"
+
+ res = Rack::MockRequest.new(app).put("", :input => "foo")
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "PUT"
+
+ res = Rack::MockRequest.new(app).delete("", :input => "foo")
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "DELETE"
+
+ Rack::MockRequest.env_for("/", :method => "OPTIONS")["REQUEST_METHOD"].
+ should.equal "OPTIONS"
+ end
+
+ specify "should set content length" do
+ env = Rack::MockRequest.env_for("/", :input => "foo")
+ env["CONTENT_LENGTH"].should.equal "3"
+ end
+
+ specify "should allow posting" do
+ res = Rack::MockRequest.new(app).get("", :input => "foo")
+ env = YAML.load(res.body)
+ env["mock.postdata"].should.equal "foo"
+
+ res = Rack::MockRequest.new(app).post("", :input => StringIO.new("foo"))
+ env = YAML.load(res.body)
+ env["mock.postdata"].should.equal "foo"
+ end
+
+ specify "should use all parts of an URL" do
+ res = Rack::MockRequest.new(app).
+ get("https://bla.example.org:9292/meh/foo?bar")
+ res.should.be.kind_of Rack::MockResponse
+
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+ env["SERVER_NAME"].should.equal "bla.example.org"
+ env["SERVER_PORT"].should.equal "9292"
+ env["QUERY_STRING"].should.equal "bar"
+ env["PATH_INFO"].should.equal "/meh/foo"
+ env["rack.url_scheme"].should.equal "https"
+ end
+
+ specify "should set SSL port and HTTP flag on when using https" do
+ res = Rack::MockRequest.new(app).
+ get("https://example.org/foo")
+ res.should.be.kind_of Rack::MockResponse
+
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+ env["SERVER_NAME"].should.equal "example.org"
+ env["SERVER_PORT"].should.equal "443"
+ env["QUERY_STRING"].should.equal ""
+ env["PATH_INFO"].should.equal "/foo"
+ env["rack.url_scheme"].should.equal "https"
+ env["HTTPS"].should.equal "on"
+ end
+
+ specify "should prepend slash to uri path" do
+ res = Rack::MockRequest.new(app).
+ get("foo")
+ res.should.be.kind_of Rack::MockResponse
+
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+ env["SERVER_NAME"].should.equal "example.org"
+ env["SERVER_PORT"].should.equal "80"
+ env["QUERY_STRING"].should.equal ""
+ env["PATH_INFO"].should.equal "/foo"
+ env["rack.url_scheme"].should.equal "http"
+ end
+
+ specify "should properly convert method name to an uppercase string" do
+ res = Rack::MockRequest.new(app).request(:get)
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+ end
+
+ specify "should accept params and build query string for GET requests" do
+ res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => {:foo => {:bar => "1"}})
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+ env["QUERY_STRING"].should.match "baz=2"
+ env["QUERY_STRING"].should.match "foo[bar]=1"
+ env["PATH_INFO"].should.equal "/foo"
+ env["mock.postdata"].should.equal ""
+ end
+
+ specify "should accept raw input in params for GET requests" do
+ res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => "foo[bar]=1")
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "GET"
+ env["QUERY_STRING"].should.match "baz=2"
+ env["QUERY_STRING"].should.match "foo[bar]=1"
+ env["PATH_INFO"].should.equal "/foo"
+ env["mock.postdata"].should.equal ""
+ end
+
+ specify "should accept params and build url encoded params for POST requests" do
+ res = Rack::MockRequest.new(app).post("/foo", :params => {:foo => {:bar => "1"}})
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "POST"
+ env["QUERY_STRING"].should.equal ""
+ env["PATH_INFO"].should.equal "/foo"
+ env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded"
+ env["mock.postdata"].should.equal "foo[bar]=1"
+ end
+
+ specify "should accept raw input in params for POST requests" do
+ res = Rack::MockRequest.new(app).post("/foo", :params => "foo[bar]=1")
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "POST"
+ env["QUERY_STRING"].should.equal ""
+ env["PATH_INFO"].should.equal "/foo"
+ env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded"
+ env["mock.postdata"].should.equal "foo[bar]=1"
+ end
+
+ specify "should accept params and build multipart encoded params for POST requests" do
+ files = Rack::Utils::Multipart::UploadedFile.new(File.join(File.dirname(__FILE__), "multipart", "file1.txt"))
+ res = Rack::MockRequest.new(app).post("/foo", :params => { "submit-name" => "Larry", "files" => files })
+ env = YAML.load(res.body)
+ env["REQUEST_METHOD"].should.equal "POST"
+ env["QUERY_STRING"].should.equal ""
+ env["PATH_INFO"].should.equal "/foo"
+ env["CONTENT_TYPE"].should.equal "multipart/form-data; boundary=AaB03x"
+ env["mock.postdata"].length.should.equal 206
+ end
+
+ specify "should behave valid according to the Rack spec" do
+ lambda {
+ res = Rack::MockRequest.new(app).
+ get("https://bla.example.org:9292/meh/foo?bar", :lint => true)
+ }.should.not.raise(Rack::Lint::LintError)
+ end
+end
+
+context "Rack::MockResponse" do
+ specify "should provide access to the HTTP status" do
+ res = Rack::MockRequest.new(app).get("")
+ res.should.be.successful
+ res.should.be.ok
+
+ res = Rack::MockRequest.new(app).get("/?status=404")
+ res.should.not.be.successful
+ res.should.be.client_error
+ res.should.be.not_found
+
+ res = Rack::MockRequest.new(app).get("/?status=501")
+ res.should.not.be.successful
+ res.should.be.server_error
+
+ res = Rack::MockRequest.new(app).get("/?status=307")
+ res.should.be.redirect
+
+ res = Rack::MockRequest.new(app).get("/?status=201", :lint => true)
+ res.should.be.empty
+ end
+
+ specify "should provide access to the HTTP headers" do
+ res = Rack::MockRequest.new(app).get("")
+ res.should.include "Content-Type"
+ res.headers["Content-Type"].should.equal "text/yaml"
+ res.original_headers["Content-Type"].should.equal "text/yaml"
+ res["Content-Type"].should.equal "text/yaml"
+ res.content_type.should.equal "text/yaml"
+ res.content_length.should.be 414 # needs change often.
+ res.location.should.be.nil
+ end
+
+ specify "should provide access to the HTTP body" do
+ res = Rack::MockRequest.new(app).get("")
+ res.body.should =~ /rack/
+ res.should =~ /rack/
+ res.should.match(/rack/)
+ res.should.satisfy { |r| r.match(/rack/) }
+ end
+
+ specify "should provide access to the Rack errors" do
+ res = Rack::MockRequest.new(app).get("/?error=foo", :lint => true)
+ res.should.be.ok
+ res.errors.should.not.be.empty
+ res.errors.should.include "foo"
+ end
+
+ specify "should optionally make Rack errors fatal" do
+ lambda {
+ Rack::MockRequest.new(app).get("/?error=foo", :fatal => true)
+ }.should.raise(Rack::MockRequest::FatalWarning)
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_mongrel.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_mongrel.rb
new file mode 100755
index 00000000000..4b38689132b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_mongrel.rb
@@ -0,0 +1,189 @@
+require 'test/spec'
+
+begin
+require 'rack/handler/mongrel'
+require 'rack/urlmap'
+require 'rack/lint'
+require 'testrequest'
+require 'timeout'
+
+Thread.abort_on_exception = true
+$tcp_defer_accept_opts = nil
+$tcp_cork_opts = nil
+
+context "Rack::Handler::Mongrel" do
+ include TestRequest::Helpers
+
+ setup do
+ server = Mongrel::HttpServer.new(@host='0.0.0.0', @port=9201)
+ server.register('/test',
+ Rack::Handler::Mongrel.new(Rack::Lint.new(TestRequest.new)))
+ server.register('/stream',
+ Rack::Handler::Mongrel.new(Rack::Lint.new(StreamingRequest)))
+ @acc = server.run
+ end
+
+ specify "should respond" do
+ lambda {
+ GET("/test")
+ }.should.not.raise
+ end
+
+ specify "should be a Mongrel" do
+ GET("/test")
+ status.should.be 200
+ response["SERVER_SOFTWARE"].should =~ /Mongrel/
+ response["HTTP_VERSION"].should.equal "HTTP/1.1"
+ response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
+ response["SERVER_PORT"].should.equal "9201"
+ response["SERVER_NAME"].should.equal "0.0.0.0"
+ end
+
+ specify "should have rack headers" do
+ GET("/test")
+ response["rack.version"].should.equal [1,1]
+ response["rack.multithread"].should.be true
+ response["rack.multiprocess"].should.be false
+ response["rack.run_once"].should.be false
+ end
+
+ specify "should have CGI headers on GET" do
+ GET("/test")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/test"
+ response["PATH_INFO"].should.be.equal ""
+ response["QUERY_STRING"].should.equal ""
+ response["test.postdata"].should.equal ""
+
+ GET("/test/foo?quux=1")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/test/foo"
+ response["PATH_INFO"].should.equal "/foo"
+ response["QUERY_STRING"].should.equal "quux=1"
+ end
+
+ specify "should have CGI headers on POST" do
+ POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
+ status.should.equal 200
+ response["REQUEST_METHOD"].should.equal "POST"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/test"
+ response["QUERY_STRING"].should.equal ""
+ response["HTTP_X_TEST_HEADER"].should.equal "42"
+ response["test.postdata"].should.equal "rack-form-data=23"
+ end
+
+ specify "should support HTTP auth" do
+ GET("/test", {:user => "ruth", :passwd => "secret"})
+ response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
+ end
+
+ specify "should set status" do
+ GET("/test?secret")
+ status.should.equal 403
+ response["rack.url_scheme"].should.equal "http"
+ end
+
+ specify "should provide a .run" do
+ block_ran = false
+ Thread.new {
+ Rack::Handler::Mongrel.run(lambda {}, {:Port => 9211}) { |server|
+ server.should.be.kind_of Mongrel::HttpServer
+ block_ran = true
+ }
+ }
+ sleep 1
+ block_ran.should.be true
+ end
+
+ specify "should provide a .run that maps a hash" do
+ block_ran = false
+ Thread.new {
+ map = {'/'=>lambda{},'/foo'=>lambda{}}
+ Rack::Handler::Mongrel.run(map, :map => true, :Port => 9221) { |server|
+ server.should.be.kind_of Mongrel::HttpServer
+ server.classifier.uris.size.should.be 2
+ server.classifier.uris.should.not.include '/arf'
+ server.classifier.uris.should.include '/'
+ server.classifier.uris.should.include '/foo'
+ block_ran = true
+ }
+ }
+ sleep 1
+ block_ran.should.be true
+ end
+
+ specify "should provide a .run that maps a urlmap" do
+ block_ran = false
+ Thread.new {
+ map = Rack::URLMap.new({'/'=>lambda{},'/bar'=>lambda{}})
+ Rack::Handler::Mongrel.run(map, {:map => true, :Port => 9231}) { |server|
+ server.should.be.kind_of Mongrel::HttpServer
+ server.classifier.uris.size.should.be 2
+ server.classifier.uris.should.not.include '/arf'
+ server.classifier.uris.should.include '/'
+ server.classifier.uris.should.include '/bar'
+ block_ran = true
+ }
+ }
+ sleep 1
+ block_ran.should.be true
+ end
+
+ specify "should provide a .run that maps a urlmap restricting by host" do
+ block_ran = false
+ Thread.new {
+ map = Rack::URLMap.new({
+ '/' => lambda{},
+ '/foo' => lambda{},
+ '/bar' => lambda{},
+ 'http://localhost/' => lambda{},
+ 'http://localhost/bar' => lambda{},
+ 'http://falsehost/arf' => lambda{},
+ 'http://falsehost/qux' => lambda{}
+ })
+ opt = {:map => true, :Port => 9241, :Host => 'localhost'}
+ Rack::Handler::Mongrel.run(map, opt) { |server|
+ server.should.be.kind_of Mongrel::HttpServer
+ server.classifier.uris.should.include '/'
+ server.classifier.handler_map['/'].size.should.be 2
+ server.classifier.uris.should.include '/foo'
+ server.classifier.handler_map['/foo'].size.should.be 1
+ server.classifier.uris.should.include '/bar'
+ server.classifier.handler_map['/bar'].size.should.be 2
+ server.classifier.uris.should.not.include '/qux'
+ server.classifier.uris.should.not.include '/arf'
+ server.classifier.uris.size.should.be 3
+ block_ran = true
+ }
+ }
+ sleep 1
+ block_ran.should.be true
+ end
+
+ specify "should stream #each part of the response" do
+ body = ''
+ begin
+ Timeout.timeout(1) do
+ Net::HTTP.start(@host, @port) do |http|
+ get = Net::HTTP::Get.new('/stream')
+ http.request(get) do |response|
+ response.read_body { |part| body << part }
+ end
+ end
+ end
+ rescue Timeout::Error
+ end
+ body.should.not.be.empty
+ end
+
+ teardown do
+ @acc.raise Mongrel::StopServer
+ end
+end
+
+rescue LoadError
+ $stderr.puts "Skipping Rack::Handler::Mongrel tests (Mongrel is required). `gem install mongrel` and try again."
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_nulllogger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_nulllogger.rb
new file mode 100755
index 00000000000..b3c2bc9c658
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_nulllogger.rb
@@ -0,0 +1,13 @@
+require 'rack/nulllogger'
+require 'rack/lint'
+require 'rack/mock'
+
+context "Rack::NullLogger" do
+ specify "acks as a nop logger" do
+ app = lambda { |env|
+ env['rack.logger'].warn "b00m"
+ [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]]
+ }
+ Rack::NullLogger.new(app).call({})
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_recursive.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_recursive.rb
new file mode 100755
index 00000000000..afc1a0d9a9c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_recursive.rb
@@ -0,0 +1,77 @@
+require 'test/spec'
+
+require 'rack/recursive'
+require 'rack/urlmap'
+require 'rack/response'
+require 'rack/mock'
+
+context "Rack::Recursive" do
+ setup do
+
+ @app1 = lambda { |env|
+ res = Rack::Response.new
+ res["X-Path-Info"] = env["PATH_INFO"]
+ res["X-Query-String"] = env["QUERY_STRING"]
+ res.finish do |res|
+ res.write "App1"
+ end
+ }
+
+ @app2 = lambda { |env|
+ Rack::Response.new.finish do |res|
+ res.write "App2"
+ _, _, body = env['rack.recursive.include'].call(env, "/app1")
+ body.each { |b|
+ res.write b
+ }
+ end
+ }
+
+ @app3 = lambda { |env|
+ raise Rack::ForwardRequest.new("/app1")
+ }
+
+ @app4 = lambda { |env|
+ raise Rack::ForwardRequest.new("http://example.org/app1/quux?meh")
+ }
+
+ end
+
+ specify "should allow for subrequests" do
+ res = Rack::MockRequest.new(Rack::Recursive.new(
+ Rack::URLMap.new("/app1" => @app1,
+ "/app2" => @app2))).
+ get("/app2")
+
+ res.should.be.ok
+ res.body.should.equal "App2App1"
+ end
+
+ specify "should raise error on requests not below the app" do
+ app = Rack::URLMap.new("/app1" => @app1,
+ "/app" => Rack::Recursive.new(
+ Rack::URLMap.new("/1" => @app1,
+ "/2" => @app2)))
+
+ lambda {
+ Rack::MockRequest.new(app).get("/app/2")
+ }.should.raise(ArgumentError).
+ message.should =~ /can only include below/
+ end
+
+ specify "should support forwarding" do
+ app = Rack::Recursive.new(Rack::URLMap.new("/app1" => @app1,
+ "/app3" => @app3,
+ "/app4" => @app4))
+
+ res = Rack::MockRequest.new(app).get("/app3")
+ res.should.be.ok
+ res.body.should.equal "App1"
+
+ res = Rack::MockRequest.new(app).get("/app4")
+ res.should.be.ok
+ res.body.should.equal "App1"
+ res["X-Path-Info"].should.equal "/quux"
+ res["X-Query-String"].should.equal "meh"
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_request.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_request.rb
new file mode 100755
index 00000000000..a34a9675f9c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_request.rb
@@ -0,0 +1,594 @@
+require 'test/spec'
+require 'stringio'
+
+require 'rack/request'
+require 'rack/mock'
+
+context "Rack::Request" do
+ specify "wraps the rack variables" do
+ req = Rack::Request.new(Rack::MockRequest.env_for("http://example.com:8080/"))
+
+ req.body.should.respond_to? :gets
+ req.scheme.should.equal "http"
+ req.request_method.should.equal "GET"
+
+ req.should.be.get
+ req.should.not.be.post
+ req.should.not.be.put
+ req.should.not.be.delete
+ req.should.not.be.head
+
+ req.script_name.should.equal ""
+ req.path_info.should.equal "/"
+ req.query_string.should.equal ""
+
+ req.host.should.equal "example.com"
+ req.port.should.equal 8080
+
+ req.content_length.should.equal "0"
+ req.content_type.should.be.nil
+ end
+
+ specify "can figure out the correct host" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/", "HTTP_HOST" => "www2.example.org")
+ req.host.should.equal "www2.example.org"
+
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/", "SERVER_NAME" => "example.org", "SERVER_PORT" => "9292")
+ req.host.should.equal "example.org"
+
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost:81", "HTTP_X_FORWARDED_HOST" => "example.org:9292")
+ req.host.should.equal "example.org"
+
+ env = Rack::MockRequest.env_for("/", "SERVER_ADDR" => "192.168.1.1", "SERVER_PORT" => "9292")
+ env.delete("SERVER_NAME")
+ req = Rack::Request.new(env)
+ req.host.should.equal "192.168.1.1"
+
+ env = Rack::MockRequest.env_for("/")
+ env.delete("SERVER_NAME")
+ req = Rack::Request.new(env)
+ req.host.should.equal ""
+ end
+
+ specify "can parse the query string" do
+ req = Rack::Request.new(Rack::MockRequest.env_for("/?foo=bar&quux=bla"))
+ req.query_string.should.equal "foo=bar&quux=bla"
+ req.GET.should.equal "foo" => "bar", "quux" => "bla"
+ req.POST.should.be.empty
+ req.params.should.equal "foo" => "bar", "quux" => "bla"
+ end
+
+ specify "raises if rack.input is missing" do
+ req = Rack::Request.new({})
+ lambda { req.POST }.should.raise(RuntimeError)
+ end
+
+ specify "can parse POST data when method is POST and no Content-Type given" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/?foo=quux",
+ "REQUEST_METHOD" => 'POST',
+ :input => "foo=bar&quux=bla")
+ req.content_type.should.be.nil
+ req.media_type.should.be.nil
+ req.query_string.should.equal "foo=quux"
+ req.GET.should.equal "foo" => "quux"
+ req.POST.should.equal "foo" => "bar", "quux" => "bla"
+ req.params.should.equal "foo" => "bar", "quux" => "bla"
+ end
+
+ specify "limit the keys from the GET query string" do
+ env = Rack::MockRequest.env_for("/?foo=bar")
+
+ old, Rack::Utils.key_space_limit = Rack::Utils.key_space_limit, 1
+ begin
+ req = Rack::Request.new(env)
+ lambda { req.GET }.should.raise(RangeError)
+ ensure
+ Rack::Utils.key_space_limit = old
+ end
+ end
+
+ specify "limit the keys from the POST form data" do
+ env = Rack::MockRequest.env_for("",
+ "REQUEST_METHOD" => 'POST',
+ :input => "foo=bar&quux=bla")
+
+ old, Rack::Utils.key_space_limit = Rack::Utils.key_space_limit, 1
+ begin
+ req = Rack::Request.new(env)
+ lambda { req.POST }.should.raise(RangeError)
+ ensure
+ Rack::Utils.key_space_limit = old
+ end
+ end
+
+ specify "can parse POST data with explicit content type regardless of method" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/",
+ "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar',
+ :input => "foo=bar&quux=bla")
+ req.content_type.should.equal 'application/x-www-form-urlencoded;foo=bar'
+ req.media_type.should.equal 'application/x-www-form-urlencoded'
+ req.media_type_params['foo'].should.equal 'bar'
+ req.POST.should.equal "foo" => "bar", "quux" => "bla"
+ req.params.should.equal "foo" => "bar", "quux" => "bla"
+ end
+
+ specify "does not parse POST data when media type is not form-data" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/?foo=quux",
+ "REQUEST_METHOD" => 'POST',
+ "CONTENT_TYPE" => 'text/plain;charset=utf-8',
+ :input => "foo=bar&quux=bla")
+ req.content_type.should.equal 'text/plain;charset=utf-8'
+ req.media_type.should.equal 'text/plain'
+ req.media_type_params['charset'].should.equal 'utf-8'
+ req.POST.should.be.empty
+ req.params.should.equal "foo" => "quux"
+ req.body.read.should.equal "foo=bar&quux=bla"
+ end
+
+ specify "can parse POST data on PUT when media type is form-data" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/?foo=quux",
+ "REQUEST_METHOD" => 'PUT',
+ "CONTENT_TYPE" => 'application/x-www-form-urlencoded',
+ :input => "foo=bar&quux=bla")
+ req.POST.should.equal "foo" => "bar", "quux" => "bla"
+ req.body.read.should.equal "foo=bar&quux=bla"
+ end
+
+ specify "rewinds input after parsing POST data" do
+ input = StringIO.new("foo=bar&quux=bla")
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/",
+ "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar',
+ :input => input)
+ req.params.should.equal "foo" => "bar", "quux" => "bla"
+ input.read.should.equal "foo=bar&quux=bla"
+ end
+
+ specify "cleans up Safari's ajax POST body" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/",
+ 'REQUEST_METHOD' => 'POST', :input => "foo=bar&quux=bla\0")
+ req.POST.should.equal "foo" => "bar", "quux" => "bla"
+ end
+
+ specify "can get value by key from params with #[]" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("?foo=quux")
+ req['foo'].should.equal 'quux'
+ req[:foo].should.equal 'quux'
+ end
+
+ specify "can set value to key on params with #[]=" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("?foo=duh")
+ req['foo'].should.equal 'duh'
+ req[:foo].should.equal 'duh'
+ req.params.should.equal 'foo' => 'duh'
+
+ req['foo'] = 'bar'
+ req.params.should.equal 'foo' => 'bar'
+ req['foo'].should.equal 'bar'
+ req[:foo].should.equal 'bar'
+
+ req[:foo] = 'jaz'
+ req.params.should.equal 'foo' => 'jaz'
+ req['foo'].should.equal 'jaz'
+ req[:foo].should.equal 'jaz'
+ end
+
+ specify "values_at answers values by keys in order given" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("?foo=baz&wun=der&bar=ful")
+ req.values_at('foo').should.equal ['baz']
+ req.values_at('foo', 'wun').should.equal ['baz', 'der']
+ req.values_at('bar', 'foo', 'wun').should.equal ['ful', 'baz', 'der']
+ end
+
+ specify "referrer should be extracted correct" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/", "HTTP_REFERER" => "/some/path")
+ req.referer.should.equal "/some/path"
+
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/")
+ req.referer.should.equal "/"
+ end
+
+ specify "user agent should be extracted correct" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/", "HTTP_USER_AGENT" => "Mozilla/4.0 (compatible)")
+ req.user_agent.should.equal "Mozilla/4.0 (compatible)"
+
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/")
+ req.user_agent.should.equal nil
+ end
+
+ specify "can cache, but invalidates the cache" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/?foo=quux",
+ "CONTENT_TYPE" => "application/x-www-form-urlencoded",
+ :input => "foo=bar&quux=bla")
+ req.GET.should.equal "foo" => "quux"
+ req.GET.should.equal "foo" => "quux"
+ req.env["QUERY_STRING"] = "bla=foo"
+ req.GET.should.equal "bla" => "foo"
+ req.GET.should.equal "bla" => "foo"
+
+ req.POST.should.equal "foo" => "bar", "quux" => "bla"
+ req.POST.should.equal "foo" => "bar", "quux" => "bla"
+ req.env["rack.input"] = StringIO.new("foo=bla&quux=bar")
+ req.POST.should.equal "foo" => "bla", "quux" => "bar"
+ req.POST.should.equal "foo" => "bla", "quux" => "bar"
+ end
+
+ specify "can figure out if called via XHR" do
+ req = Rack::Request.new(Rack::MockRequest.env_for(""))
+ req.should.not.be.xhr
+
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest")
+ req.should.be.xhr
+ end
+
+ specify "can parse cookies" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("", "HTTP_COOKIE" => "foo=bar;quux=h&m")
+ req.cookies.should.equal "foo" => "bar", "quux" => "h&m"
+ req.cookies.should.equal "foo" => "bar", "quux" => "h&m"
+ req.env.delete("HTTP_COOKIE")
+ req.cookies.should.equal({})
+ end
+
+ specify "parses cookies according to RFC 2109" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for('', 'HTTP_COOKIE' => 'foo=bar;foo=car')
+ req.cookies.should.equal 'foo' => 'bar'
+ end
+
+ specify "provides setters" do
+ req = Rack::Request.new(e=Rack::MockRequest.env_for(""))
+ req.script_name.should.equal ""
+ req.script_name = "/foo"
+ req.script_name.should.equal "/foo"
+ e["SCRIPT_NAME"].should.equal "/foo"
+
+ req.path_info.should.equal "/"
+ req.path_info = "/foo"
+ req.path_info.should.equal "/foo"
+ e["PATH_INFO"].should.equal "/foo"
+ end
+
+ specify "provides the original env" do
+ req = Rack::Request.new(e=Rack::MockRequest.env_for(""))
+ req.env.should.be e
+ end
+
+ specify "can restore the URL" do
+ Rack::Request.new(Rack::MockRequest.env_for("")).url.
+ should.equal "http://example.org/"
+ Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).url.
+ should.equal "http://example.org/foo/"
+ Rack::Request.new(Rack::MockRequest.env_for("/foo")).url.
+ should.equal "http://example.org/foo"
+ Rack::Request.new(Rack::MockRequest.env_for("?foo")).url.
+ should.equal "http://example.org/?foo"
+ Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).url.
+ should.equal "http://example.org:8080/"
+ Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).url.
+ should.equal "https://example.org/"
+
+ Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).url.
+ should.equal "https://example.com:8080/foo?foo"
+ end
+
+ specify "can restore the full path" do
+ Rack::Request.new(Rack::MockRequest.env_for("")).fullpath.
+ should.equal "/"
+ Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).fullpath.
+ should.equal "/foo/"
+ Rack::Request.new(Rack::MockRequest.env_for("/foo")).fullpath.
+ should.equal "/foo"
+ Rack::Request.new(Rack::MockRequest.env_for("?foo")).fullpath.
+ should.equal "/?foo"
+ Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).fullpath.
+ should.equal "/"
+ Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).fullpath.
+ should.equal "/"
+
+ Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).fullpath.
+ should.equal "/foo?foo"
+ end
+
+ specify "can handle multiple media type parameters" do
+ req = Rack::Request.new \
+ Rack::MockRequest.env_for("/",
+ "CONTENT_TYPE" => 'text/plain; foo=BAR,baz=bizzle dizzle;BLING=bam')
+ req.should.not.be.form_data
+ req.media_type_params.should.include 'foo'
+ req.media_type_params['foo'].should.equal 'BAR'
+ req.media_type_params.should.include 'baz'
+ req.media_type_params['baz'].should.equal 'bizzle dizzle'
+ req.media_type_params.should.not.include 'BLING'
+ req.media_type_params.should.include 'bling'
+ req.media_type_params['bling'].should.equal 'bam'
+ end
+
+ specify "raise RangeError if the key space is exhausted" do
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ old, Rack::Utils.key_space_limit = Rack::Utils.key_space_limit, 1
+ begin
+ lambda { Rack::Utils::Multipart.parse_multipart(env) }.should.raise(RangeError)
+ ensure
+ Rack::Utils.key_space_limit = old
+ end
+ end
+
+ specify "can parse multipart form data" do
+ # Adapted from RFC 1867.
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ req.POST.should.include "fileupload"
+ req.POST.should.include "reply"
+
+ req.should.be.form_data
+ req.content_length.should.equal input.size
+ req.media_type.should.equal 'multipart/form-data'
+ req.media_type_params.should.include 'boundary'
+ req.media_type_params['boundary'].should.equal 'AaB03x'
+
+ req.POST["reply"].should.equal "yes"
+
+ f = req.POST["fileupload"]
+ f.should.be.kind_of Hash
+ f[:type].should.equal "image/jpeg"
+ f[:filename].should.equal "dj.jpg"
+ f.should.include :tempfile
+ f[:tempfile].size.should.equal 76
+ end
+
+ specify "can parse big multipart form data" do
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ req.POST["huge"][:tempfile].size.should.equal 32768
+ req.POST["mean"][:tempfile].size.should.equal 10
+ req.POST["mean"][:tempfile].read.should.equal "--AaB03xha"
+ end
+
+ specify "can detect invalid multipart form data" do
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ lambda { req.POST }.should.raise(EOFError)
+
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ lambda { req.POST }.should.raise(EOFError)
+
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ lambda { req.POST }.should.raise(EOFError)
+ end
+
+ specify "shouldn't try to interpret binary as utf8" do
+ begin
+ original_kcode = $KCODE
+ $KCODE='UTF8'
+
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ lambda{req.POST}.should.not.raise(EOFError)
+ req.POST["fileupload"][:tempfile].size.should.equal 4
+ ensure
+ $KCODE = original_kcode
+ end
+ end
+
+
+ specify "should work around buggy 1.8.* Tempfile equality" do
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size,
+ :input => rack_input)
+
+ lambda {req.POST}.should.not.raise
+ lambda {req.POST}.should.blaming("input re-processed!").not.raise
+ end
+
+ specify "does conform to the Rack spec" do
+ app = lambda { |env|
+ content = Rack::Request.new(env).POST["file"].inspect
+ size = content.respond_to?(:bytesize) ? content.bytesize : content.size
+ [200, {"Content-Type" => "text/html", "Content-Length" => size.to_s}, [content]]
+ }
+
+ input = < "multipart/form-data, boundary=AaB03x",
+ "CONTENT_LENGTH" => input.size.to_s, "rack.input" => StringIO.new(input)
+
+ res.should.be.ok
+ end
+
+ specify "should parse Accept-Encoding correctly" do
+ parser = lambda do |x|
+ Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => x)).accept_encoding
+ end
+
+ parser.call(nil).should.equal([])
+
+ parser.call("compress, gzip").should.equal([["compress", 1.0], ["gzip", 1.0]])
+ parser.call("").should.equal([])
+ parser.call("*").should.equal([["*", 1.0]])
+ parser.call("compress;q=0.5, gzip;q=1.0").should.equal([["compress", 0.5], ["gzip", 1.0]])
+ parser.call("gzip;q=1.0, identity; q=0.5, *;q=0").should.equal([["gzip", 1.0], ["identity", 0.5], ["*", 0] ])
+
+ lambda { parser.call("gzip ; q=1.0") }.should.raise(RuntimeError)
+ end
+
+ specify 'should provide ip information' do
+ app = lambda { |env|
+ request = Rack::Request.new(env)
+ response = Rack::Response.new
+ response.write request.ip
+ response.finish
+ }
+
+ mock = Rack::MockRequest.new(Rack::Lint.new(app))
+ res = mock.get '/', 'REMOTE_ADDR' => '123.123.123.123'
+ res.body.should.equal '123.123.123.123'
+
+ res = mock.get '/',
+ 'REMOTE_ADDR' => '123.123.123.123',
+ 'HTTP_X_FORWARDED_FOR' => '234.234.234.234'
+
+ res.body.should.equal '234.234.234.234'
+
+ res = mock.get '/',
+ 'REMOTE_ADDR' => '123.123.123.123',
+ 'HTTP_X_FORWARDED_FOR' => '234.234.234.234,212.212.212.212'
+
+ res.body.should.equal '212.212.212.212'
+ end
+
+ class MyRequest < Rack::Request
+ def params
+ {:foo => "bar"}
+ end
+ end
+
+ specify "should allow subclass request to be instantiated after parent request" do
+ env = Rack::MockRequest.env_for("/?foo=bar")
+
+ req1 = Rack::Request.new(env)
+ req1.GET.should.equal "foo" => "bar"
+ req1.params.should.equal "foo" => "bar"
+
+ req2 = MyRequest.new(env)
+ req2.GET.should.equal "foo" => "bar"
+ req2.params.should.equal :foo => "bar"
+ end
+
+ specify "should allow parent request to be instantiated after subclass request" do
+ env = Rack::MockRequest.env_for("/?foo=bar")
+
+ req1 = MyRequest.new(env)
+ req1.GET.should.equal "foo" => "bar"
+ req1.params.should.equal :foo => "bar"
+
+ req2 = Rack::Request.new(env)
+ req2.GET.should.equal "foo" => "bar"
+ req2.params.should.equal "foo" => "bar"
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_response.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_response.rb
new file mode 100755
index 00000000000..31c7f3ad520
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_response.rb
@@ -0,0 +1,221 @@
+require 'test/spec'
+require 'set'
+
+require 'rack/response'
+
+context "Rack::Response" do
+ specify "has sensible default values" do
+ response = Rack::Response.new
+ status, header, body = response.finish
+ status.should.equal 200
+ header.should.equal "Content-Type" => "text/html"
+ body.each { |part|
+ part.should.equal ""
+ }
+
+ response = Rack::Response.new
+ status, header, body = *response
+ status.should.equal 200
+ header.should.equal "Content-Type" => "text/html"
+ body.each { |part|
+ part.should.equal ""
+ }
+ end
+
+ specify "can be written to" do
+ response = Rack::Response.new
+
+ status, header, body = response.finish do
+ response.write "foo"
+ response.write "bar"
+ response.write "baz"
+ end
+
+ parts = []
+ body.each { |part| parts << part }
+
+ parts.should.equal ["foo", "bar", "baz"]
+ end
+
+ specify "can set and read headers" do
+ response = Rack::Response.new
+ response["Content-Type"].should.equal "text/html"
+ response["Content-Type"] = "text/plain"
+ response["Content-Type"].should.equal "text/plain"
+ end
+
+ specify "can set cookies" do
+ response = Rack::Response.new
+
+ response.set_cookie "foo", "bar"
+ response["Set-Cookie"].should.equal "foo=bar"
+ response.set_cookie "foo2", "bar2"
+ response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2"].join("\n")
+ response.set_cookie "foo3", "bar3"
+ response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2", "foo3=bar3"].join("\n")
+ end
+
+ specify "formats the Cookie expiration date accordingly to RFC 2109" do
+ response = Rack::Response.new
+
+ response.set_cookie "foo", {:value => "bar", :expires => Time.now+10}
+ response["Set-Cookie"].should.match(
+ /expires=..., \d\d-...-\d\d\d\d \d\d:\d\d:\d\d .../)
+ end
+
+ specify "can set secure cookies" do
+ response = Rack::Response.new
+ response.set_cookie "foo", {:value => "bar", :secure => true}
+ response["Set-Cookie"].should.equal "foo=bar; secure"
+ end
+
+ specify "can set http only cookies" do
+ response = Rack::Response.new
+ response.set_cookie "foo", {:value => "bar", :httponly => true}
+ response["Set-Cookie"].should.equal "foo=bar; HttpOnly"
+ end
+
+ specify "can delete cookies" do
+ response = Rack::Response.new
+ response.set_cookie "foo", "bar"
+ response.set_cookie "foo2", "bar2"
+ response.delete_cookie "foo"
+ response["Set-Cookie"].should.equal ["foo2=bar2",
+ "foo=; expires=Thu, 01-Jan-1970 00:00:00 GMT"].join("\n")
+ end
+
+ specify "can do redirects" do
+ response = Rack::Response.new
+ response.redirect "/foo"
+ status, header, body = response.finish
+
+ status.should.equal 302
+ header["Location"].should.equal "/foo"
+
+ response = Rack::Response.new
+ response.redirect "/foo", 307
+ status, header, body = response.finish
+
+ status.should.equal 307
+ end
+
+ specify "has a useful constructor" do
+ r = Rack::Response.new("foo")
+ status, header, body = r.finish
+ str = ""; body.each { |part| str << part }
+ str.should.equal "foo"
+
+ r = Rack::Response.new(["foo", "bar"])
+ status, header, body = r.finish
+ str = ""; body.each { |part| str << part }
+ str.should.equal "foobar"
+
+ r = Rack::Response.new(["foo", "bar"].to_set)
+ r.write "foo"
+ status, header, body = r.finish
+ str = ""; body.each { |part| str << part }
+ str.should.equal "foobarfoo"
+
+ r = Rack::Response.new([], 500)
+ r.status.should.equal 500
+
+ r = Rack::Response.new([], "200 OK")
+ r.status.should.equal 200
+ end
+
+ specify "has a constructor that can take a block" do
+ r = Rack::Response.new { |res|
+ res.status = 404
+ res.write "foo"
+ }
+ status, header, body = r.finish
+ str = ""; body.each { |part| str << part }
+ str.should.equal "foo"
+ status.should.equal 404
+ end
+
+ specify "doesn't return invalid responses" do
+ r = Rack::Response.new(["foo", "bar"], 204)
+ status, header, body = r.finish
+ str = ""; body.each { |part| str << part }
+ str.should.be.empty
+ header["Content-Type"].should.equal nil
+
+ lambda {
+ Rack::Response.new(Object.new)
+ }.should.raise(TypeError).
+ message.should =~ /stringable or iterable required/
+ end
+
+ specify "knows if it's empty" do
+ r = Rack::Response.new
+ r.should.be.empty
+ r.write "foo"
+ r.should.not.be.empty
+
+ r = Rack::Response.new
+ r.should.be.empty
+ r.finish
+ r.should.be.empty
+
+ r = Rack::Response.new
+ r.should.be.empty
+ r.finish { }
+ r.should.not.be.empty
+ end
+
+ specify "should provide access to the HTTP status" do
+ res = Rack::Response.new
+ res.status = 200
+ res.should.be.successful
+ res.should.be.ok
+
+ res.status = 404
+ res.should.not.be.successful
+ res.should.be.client_error
+ res.should.be.not_found
+
+ res.status = 501
+ res.should.not.be.successful
+ res.should.be.server_error
+
+ res.status = 307
+ res.should.be.redirect
+ end
+
+ specify "should provide access to the HTTP headers" do
+ res = Rack::Response.new
+ res["Content-Type"] = "text/yaml"
+
+ res.should.include "Content-Type"
+ res.headers["Content-Type"].should.equal "text/yaml"
+ res["Content-Type"].should.equal "text/yaml"
+ res.content_type.should.equal "text/yaml"
+ res.content_length.should.be.nil
+ res.location.should.be.nil
+ end
+
+ specify "does not add or change Content-Length when #finish()ing" do
+ res = Rack::Response.new
+ res.status = 200
+ res.finish
+ res.headers["Content-Length"].should.be.nil
+
+ res = Rack::Response.new
+ res.status = 200
+ res.headers["Content-Length"] = "10"
+ res.finish
+ res.headers["Content-Length"].should.equal "10"
+ end
+
+ specify "updates Content-Length when body appended to using #write" do
+ res = Rack::Response.new
+ res.status = 200
+ res.headers["Content-Length"].should.be.nil
+ res.write "Hi"
+ res.headers["Content-Length"].should.equal "2"
+ res.write " there"
+ res.headers["Content-Length"].should.equal "8"
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_rewindable_input.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_rewindable_input.rb
new file mode 100755
index 00000000000..78bebfc90ae
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_rewindable_input.rb
@@ -0,0 +1,118 @@
+require 'test/spec'
+require 'stringio'
+require 'rack/rewindable_input'
+
+shared_context "a rewindable IO object" do
+ setup do
+ @rio = Rack::RewindableInput.new(@io)
+ end
+
+ teardown do
+ @rio.close
+ end
+
+ specify "should be able to handle to read()" do
+ @rio.read.should.equal "hello world"
+ end
+
+ specify "should be able to handle to read(nil)" do
+ @rio.read(nil).should.equal "hello world"
+ end
+
+ specify "should be able to handle to read(length)" do
+ @rio.read(1).should.equal "h"
+ end
+
+ specify "should be able to handle to read(length, buffer)" do
+ buffer = ""
+ result = @rio.read(1, buffer)
+ result.should.equal "h"
+ result.object_id.should.equal buffer.object_id
+ end
+
+ specify "should be able to handle to read(nil, buffer)" do
+ buffer = ""
+ result = @rio.read(nil, buffer)
+ result.should.equal "hello world"
+ result.object_id.should.equal buffer.object_id
+ end
+
+ specify "should rewind to the beginning when #rewind is called" do
+ @rio.read(1)
+ @rio.rewind
+ @rio.read.should.equal "hello world"
+ end
+
+ specify "should be able to handle gets" do
+ @rio.gets.should == "hello world"
+ end
+
+ specify "should be able to handle each" do
+ array = []
+ @rio.each do |data|
+ array << data
+ end
+ array.should.equal(["hello world"])
+ end
+
+ specify "should not buffer into a Tempfile if no data has been read yet" do
+ @rio.instance_variable_get(:@rewindable_io).should.be.nil
+ end
+
+ specify "should buffer into a Tempfile when data has been consumed for the first time" do
+ @rio.read(1)
+ tempfile = @rio.instance_variable_get(:@rewindable_io)
+ tempfile.should.not.be.nil
+ @rio.read(1)
+ tempfile2 = @rio.instance_variable_get(:@rewindable_io)
+ tempfile2.should.equal tempfile
+ end
+
+ specify "should close the underlying tempfile upon calling #close" do
+ @rio.read(1)
+ tempfile = @rio.instance_variable_get(:@rewindable_io)
+ @rio.close
+ tempfile.should.be.closed
+ end
+
+ specify "should be possibel to call #close when no data has been buffered yet" do
+ @rio.close
+ end
+
+ specify "should be possible to call #close multiple times" do
+ @rio.close
+ @rio.close
+ end
+end
+
+context "Rack::RewindableInput" do
+ context "given an IO object that is already rewindable" do
+ setup do
+ @io = StringIO.new("hello world")
+ end
+
+ it_should_behave_like "a rewindable IO object"
+ end
+
+ context "given an IO object that is not rewindable" do
+ setup do
+ @io = StringIO.new("hello world")
+ @io.instance_eval do
+ undef :rewind
+ end
+ end
+
+ it_should_behave_like "a rewindable IO object"
+ end
+
+ context "given an IO object whose rewind method raises Errno::ESPIPE" do
+ setup do
+ @io = StringIO.new("hello world")
+ def @io.rewind
+ raise Errno::ESPIPE, "You can't rewind this!"
+ end
+ end
+
+ it_should_behave_like "a rewindable IO object"
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_runtime.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_runtime.rb
new file mode 100755
index 00000000000..62d8095646d
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_runtime.rb
@@ -0,0 +1,35 @@
+require 'test/spec'
+require 'rack/mock'
+require 'rack/runtime'
+
+context "Rack::Runtime" do
+ specify "sets X-Runtime is none is set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
+ response = Rack::Runtime.new(app).call({})
+ response[1]['X-Runtime'].should =~ /[\d\.]+/
+ end
+
+ specify "does not set the X-Runtime if it is already set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain', "X-Runtime" => "foobar"}, "Hello, World!"] }
+ response = Rack::Runtime.new(app).call({})
+ response[1]['X-Runtime'].should == "foobar"
+ end
+
+ specify "should allow a suffix to be set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
+ response = Rack::Runtime.new(app, "Test").call({})
+ response[1]['X-Runtime-Test'].should =~ /[\d\.]+/
+ end
+
+ specify "should allow multiple timers to be set" do
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
+ runtime1 = Rack::Runtime.new(app, "App")
+ runtime2 = Rack::Runtime.new(runtime1, "All")
+ response = runtime2.call({})
+
+ response[1]['X-Runtime-App'].should =~ /[\d\.]+/
+ response[1]['X-Runtime-All'].should =~ /[\d\.]+/
+
+ Float(response[1]['X-Runtime-All']).should > Float(response[1]['X-Runtime-App'])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_sendfile.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_sendfile.rb
new file mode 100755
index 00000000000..8cfe2017b52
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_sendfile.rb
@@ -0,0 +1,86 @@
+require 'test/spec'
+require 'rack/mock'
+require 'rack/sendfile'
+
+context "Rack::File" do
+ specify "should respond to #to_path" do
+ Rack::File.new(Dir.pwd).should.respond_to :to_path
+ end
+end
+
+context "Rack::Sendfile" do
+ def sendfile_body
+ res = ['Hello World']
+ def res.to_path ; "/tmp/hello.txt" ; end
+ res
+ end
+
+ def simple_app(body=sendfile_body)
+ lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] }
+ end
+
+ def sendfile_app(body=sendfile_body)
+ Rack::Sendfile.new(simple_app(body))
+ end
+
+ setup do
+ @request = Rack::MockRequest.new(sendfile_app)
+ end
+
+ def request(headers={})
+ yield @request.get('/', headers)
+ end
+
+ specify "does nothing when no X-Sendfile-Type header present" do
+ request do |response|
+ response.should.be.ok
+ response.body.should.equal 'Hello World'
+ response.headers.should.not.include 'X-Sendfile'
+ end
+ end
+
+ specify "sets X-Sendfile response header and discards body" do
+ request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response|
+ response.should.be.ok
+ response.body.should.be.empty
+ response.headers['X-Sendfile'].should.equal '/tmp/hello.txt'
+ end
+ end
+
+ specify "sets X-Lighttpd-Send-File response header and discards body" do
+ request 'HTTP_X_SENDFILE_TYPE' => 'X-Lighttpd-Send-File' do |response|
+ response.should.be.ok
+ response.body.should.be.empty
+ response.headers['X-Lighttpd-Send-File'].should.equal '/tmp/hello.txt'
+ end
+ end
+
+ specify "sets X-Accel-Redirect response header and discards body" do
+ headers = {
+ 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect',
+ 'HTTP_X_ACCEL_MAPPING' => '/tmp/=/foo/bar/'
+ }
+ request headers do |response|
+ response.should.be.ok
+ response.body.should.be.empty
+ response.headers['X-Accel-Redirect'].should.equal '/foo/bar/hello.txt'
+ end
+ end
+
+ specify 'writes to rack.error when no X-Accel-Mapping is specified' do
+ request 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect' do |response|
+ response.should.be.ok
+ response.body.should.equal 'Hello World'
+ response.headers.should.not.include 'X-Accel-Redirect'
+ response.errors.should.include 'X-Accel-Mapping'
+ end
+ end
+
+ specify 'does nothing when body does not respond to #to_path' do
+ @request = Rack::MockRequest.new(sendfile_app(['Not a file...']))
+ request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response|
+ response.body.should.equal 'Not a file...'
+ response.headers.should.not.include 'X-Sendfile'
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_cookie.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_cookie.rb
new file mode 100755
index 00000000000..fba3f83bfa1
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_cookie.rb
@@ -0,0 +1,73 @@
+require 'test/spec'
+
+require 'rack/session/cookie'
+require 'rack/mock'
+require 'rack/response'
+
+context "Rack::Session::Cookie" do
+ incrementor = lambda { |env|
+ env["rack.session"]["counter"] ||= 0
+ env["rack.session"]["counter"] += 1
+ Rack::Response.new(env["rack.session"].inspect).to_a
+ }
+
+ specify "creates a new cookie" do
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/")
+ res["Set-Cookie"].should.match("rack.session=")
+ res.body.should.equal '{"counter"=>1}'
+ end
+
+ specify "loads from a cookie" do
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/")
+ cookie = res["Set-Cookie"]
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).
+ get("/", "HTTP_COOKIE" => cookie)
+ res.body.should.equal '{"counter"=>2}'
+ cookie = res["Set-Cookie"]
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).
+ get("/", "HTTP_COOKIE" => cookie)
+ res.body.should.equal '{"counter"=>3}'
+ end
+
+ specify "survives broken cookies" do
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).
+ get("/", "HTTP_COOKIE" => "rack.session=blarghfasel")
+ res.body.should.equal '{"counter"=>1}'
+ end
+
+ bigcookie = lambda { |env|
+ env["rack.session"]["cookie"] = "big" * 3000
+ Rack::Response.new(env["rack.session"].inspect).to_a
+ }
+
+ specify "barks on too big cookies" do
+ lambda {
+ Rack::MockRequest.new(Rack::Session::Cookie.new(bigcookie)).
+ get("/", :fatal => true)
+ }.should.raise(Rack::MockRequest::FatalWarning)
+ end
+
+ specify "loads from a cookie wih integrity hash" do
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).get("/")
+ cookie = res["Set-Cookie"]
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).
+ get("/", "HTTP_COOKIE" => cookie)
+ res.body.should.equal '{"counter"=>2}'
+ cookie = res["Set-Cookie"]
+ res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).
+ get("/", "HTTP_COOKIE" => cookie)
+ res.body.should.equal '{"counter"=>3}'
+ end
+
+ specify "ignores tampered with session cookies" do
+ app = Rack::Session::Cookie.new(incrementor, :secret => 'test')
+ response1 = Rack::MockRequest.new(app).get("/")
+ _, digest = response1["Set-Cookie"].split("--")
+ tampered_with_cookie = "hackerman-was-here" + "--" + digest
+ response2 = Rack::MockRequest.new(app).get("/", "HTTP_COOKIE" =>
+ tampered_with_cookie)
+
+ # The tampered-with cookie is ignored, so we get back an identical Set-Cookie
+ response2["Set-Cookie"].should.equal(response1["Set-Cookie"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_memcache.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_memcache.rb
new file mode 100755
index 00000000000..faac796ebd9
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_memcache.rb
@@ -0,0 +1,273 @@
+require 'test/spec'
+
+begin
+ require 'rack/session/memcache'
+ require 'rack/mock'
+ require 'rack/response'
+ require 'thread'
+
+ context "Rack::Session::Memcache" do
+ session_key = Rack::Session::Memcache::DEFAULT_OPTIONS[:key]
+ session_match = /#{session_key}=([0-9a-fA-F]+);/
+ incrementor = lambda do |env|
+ env["rack.session"]["counter"] ||= 0
+ env["rack.session"]["counter"] += 1
+ Rack::Response.new(env["rack.session"].inspect).to_a
+ end
+ drop_session = proc do |env|
+ env['rack.session.options'][:drop] = true
+ incrementor.call(env)
+ end
+ renew_session = proc do |env|
+ env['rack.session.options'][:renew] = true
+ incrementor.call(env)
+ end
+ defer_session = proc do |env|
+ env['rack.session.options'][:defer] = true
+ incrementor.call(env)
+ end
+
+ specify "faults on no connection" do
+ if RUBY_VERSION < "1.9"
+ lambda do
+ Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver'
+ end.should.raise
+ else
+ lambda do
+ Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver'
+ end.should.raise ArgumentError
+ end
+ end
+
+ specify "connect to existing server" do
+ test_pool = MemCache.new incrementor, :namespace => 'test:rack:session'
+ end
+
+ specify "creates a new cookie" do
+ pool = Rack::Session::Memcache.new(incrementor)
+ res = Rack::MockRequest.new(pool).get("/")
+ res["Set-Cookie"].should.match("#{session_key}=")
+ res.body.should.equal '{"counter"=>1}'
+ end
+
+ specify "determines session from a cookie" do
+ pool = Rack::Session::Memcache.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ res = req.get("/")
+ cookie = res["Set-Cookie"]
+ req.get("/", "HTTP_COOKIE" => cookie).
+ body.should.equal '{"counter"=>2}'
+ req.get("/", "HTTP_COOKIE" => cookie).
+ body.should.equal '{"counter"=>3}'
+ end
+
+ specify "survives nonexistant cookies" do
+ bad_cookie = "rack.session=blarghfasel"
+ pool = Rack::Session::Memcache.new(incrementor)
+ res = Rack::MockRequest.new(pool).
+ get("/", "HTTP_COOKIE" => bad_cookie)
+ res.body.should.equal '{"counter"=>1}'
+ cookie = res["Set-Cookie"][session_match]
+ cookie.should.not.match(/#{bad_cookie}/)
+ end
+
+ specify "maintains freshness" do
+ pool = Rack::Session::Memcache.new(incrementor, :expire_after => 3)
+ res = Rack::MockRequest.new(pool).get('/')
+ res.body.should.include '"counter"=>1'
+ cookie = res["Set-Cookie"]
+ res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
+ res["Set-Cookie"].should.equal cookie
+ res.body.should.include '"counter"=>2'
+ puts 'Sleeping to expire session' if $DEBUG
+ sleep 4
+ res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
+ res["Set-Cookie"].should.not.equal cookie
+ res.body.should.include '"counter"=>1'
+ end
+
+ specify "deletes cookies with :drop option" do
+ pool = Rack::Session::Memcache.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ drop = Rack::Utils::Context.new(pool, drop_session)
+ dreq = Rack::MockRequest.new(drop)
+
+ res0 = req.get("/")
+ session = (cookie = res0["Set-Cookie"])[session_match]
+ res0.body.should.equal '{"counter"=>1}'
+
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
+ res1["Set-Cookie"][session_match].should.equal session
+ res1.body.should.equal '{"counter"=>2}'
+
+ res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
+ res2["Set-Cookie"].should.equal nil
+ res2.body.should.equal '{"counter"=>3}'
+
+ res3 = req.get("/", "HTTP_COOKIE" => cookie)
+ res3["Set-Cookie"][session_match].should.not.equal session
+ res3.body.should.equal '{"counter"=>1}'
+ end
+
+ specify "provides new session id with :renew option" do
+ pool = Rack::Session::Memcache.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ renew = Rack::Utils::Context.new(pool, renew_session)
+ rreq = Rack::MockRequest.new(renew)
+
+ res0 = req.get("/")
+ session = (cookie = res0["Set-Cookie"])[session_match]
+ res0.body.should.equal '{"counter"=>1}'
+
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
+ res1["Set-Cookie"][session_match].should.equal session
+ res1.body.should.equal '{"counter"=>2}'
+
+ res2 = rreq.get("/", "HTTP_COOKIE" => cookie)
+ new_cookie = res2["Set-Cookie"]
+ new_session = new_cookie[session_match]
+ new_session.should.not.equal session
+ res2.body.should.equal '{"counter"=>3}'
+
+ res3 = req.get("/", "HTTP_COOKIE" => new_cookie)
+ res3["Set-Cookie"][session_match].should.equal new_session
+ res3.body.should.equal '{"counter"=>4}'
+ end
+
+ specify "omits cookie with :defer option" do
+ pool = Rack::Session::Memcache.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ defer = Rack::Utils::Context.new(pool, defer_session)
+ dreq = Rack::MockRequest.new(defer)
+
+ res0 = req.get("/")
+ session = (cookie = res0["Set-Cookie"])[session_match]
+ res0.body.should.equal '{"counter"=>1}'
+
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
+ res1["Set-Cookie"][session_match].should.equal session
+ res1.body.should.equal '{"counter"=>2}'
+
+ res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
+ res2["Set-Cookie"].should.equal nil
+ res2.body.should.equal '{"counter"=>3}'
+
+ res3 = req.get("/", "HTTP_COOKIE" => cookie)
+ res3["Set-Cookie"][session_match].should.equal session
+ res3.body.should.equal '{"counter"=>4}'
+ end
+
+ specify "deep hashes are correctly updated" do
+ store = nil
+ hash_check = proc do |env|
+ session = env['rack.session']
+ unless session.include? 'test'
+ session.update :a => :b, :c => { :d => :e },
+ :f => { :g => { :h => :i} }, 'test' => true
+ else
+ session[:f][:g][:h] = :j
+ end
+ [200, {}, session.inspect]
+ end
+ pool = Rack::Session::Memcache.new(hash_check)
+ req = Rack::MockRequest.new(pool)
+
+ res0 = req.get("/")
+ session_id = (cookie = res0["Set-Cookie"])[session_match, 1]
+ ses0 = pool.pool.get(session_id, true)
+
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
+ ses1 = pool.pool.get(session_id, true)
+
+ ses1.should.not.equal ses0
+ end
+
+ # anyone know how to do this better?
+ specify "multithread: should cleanly merge sessions" do
+ next unless $DEBUG
+ warn 'Running multithread test for Session::Memcache'
+ pool = Rack::Session::Memcache.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+
+ res = req.get('/')
+ res.body.should.equal '{"counter"=>1}'
+ cookie = res["Set-Cookie"]
+ session_id = cookie[session_match, 1]
+
+ delta_incrementor = lambda do |env|
+ # emulate disconjoinment of threading
+ env['rack.session'] = env['rack.session'].dup
+ Thread.stop
+ env['rack.session'][(Time.now.usec*rand).to_i] = true
+ incrementor.call(env)
+ end
+ tses = Rack::Utils::Context.new pool, delta_incrementor
+ treq = Rack::MockRequest.new(tses)
+ tnum = rand(7).to_i+5
+ r = Array.new(tnum) do
+ Thread.new(treq) do |run|
+ run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
+ end
+ end.reverse.map{|t| t.run.join.value }
+ r.each do |request|
+ request['Set-Cookie'].should.equal cookie
+ request.body.should.include '"counter"=>2'
+ end
+
+ session = pool.pool.get(session_id)
+ session.size.should.be tnum+1 # counter
+ session['counter'].should.be 2 # meeeh
+
+ tnum = rand(7).to_i+5
+ r = Array.new(tnum) do |i|
+ delta_time = proc do |env|
+ env['rack.session'][i] = Time.now
+ Thread.stop
+ env['rack.session'] = env['rack.session'].dup
+ env['rack.session'][i] -= Time.now
+ incrementor.call(env)
+ end
+ app = Rack::Utils::Context.new pool, time_delta
+ req = Rack::MockRequest.new app
+ Thread.new(req) do |run|
+ run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
+ end
+ end.reverse.map{|t| t.run.join.value }
+ r.each do |request|
+ request['Set-Cookie'].should.equal cookie
+ request.body.should.include '"counter"=>3'
+ end
+
+ session = pool.pool.get(session_id)
+ session.size.should.be tnum+1
+ session['counter'].should.be 3
+
+ drop_counter = proc do |env|
+ env['rack.session'].delete 'counter'
+ env['rack.session']['foo'] = 'bar'
+ [200, {'Content-Type'=>'text/plain'}, env['rack.session'].inspect]
+ end
+ tses = Rack::Utils::Context.new pool, drop_counter
+ treq = Rack::MockRequest.new(tses)
+ tnum = rand(7).to_i+5
+ r = Array.new(tnum) do
+ Thread.new(treq) do |run|
+ run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
+ end
+ end.reverse.map{|t| t.run.join.value }
+ r.each do |request|
+ request['Set-Cookie'].should.equal cookie
+ request.body.should.include '"foo"=>"bar"'
+ end
+
+ session = pool.pool.get(session_id)
+ session.size.should.be r.size+1
+ session['counter'].should.be.nil?
+ session['foo'].should.equal 'bar'
+ end
+ end
+rescue RuntimeError
+ $stderr.puts "Skipping Rack::Session::Memcache tests. Start memcached and try again."
+rescue LoadError
+ $stderr.puts "Skipping Rack::Session::Memcache tests (Memcache is required). `gem install memcache-client` and try again."
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_pool.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_pool.rb
new file mode 100755
index 00000000000..6be382ec758
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_session_pool.rb
@@ -0,0 +1,172 @@
+require 'test/spec'
+
+require 'rack/session/pool'
+require 'rack/mock'
+require 'rack/response'
+require 'thread'
+
+context "Rack::Session::Pool" do
+ session_key = Rack::Session::Pool::DEFAULT_OPTIONS[:key]
+ session_match = /#{session_key}=[0-9a-fA-F]+;/
+ incrementor = lambda do |env|
+ env["rack.session"]["counter"] ||= 0
+ env["rack.session"]["counter"] += 1
+ Rack::Response.new(env["rack.session"].inspect).to_a
+ end
+ drop_session = proc do |env|
+ env['rack.session.options'][:drop] = true
+ incrementor.call(env)
+ end
+ renew_session = proc do |env|
+ env['rack.session.options'][:renew] = true
+ incrementor.call(env)
+ end
+ defer_session = proc do |env|
+ env['rack.session.options'][:defer] = true
+ incrementor.call(env)
+ end
+
+ specify "creates a new cookie" do
+ pool = Rack::Session::Pool.new(incrementor)
+ res = Rack::MockRequest.new(pool).get("/")
+ res["Set-Cookie"].should.match session_match
+ res.body.should.equal '{"counter"=>1}'
+ end
+
+ specify "determines session from a cookie" do
+ pool = Rack::Session::Pool.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ cookie = req.get("/")["Set-Cookie"]
+ req.get("/", "HTTP_COOKIE" => cookie).
+ body.should.equal '{"counter"=>2}'
+ req.get("/", "HTTP_COOKIE" => cookie).
+ body.should.equal '{"counter"=>3}'
+ end
+
+ specify "survives nonexistant cookies" do
+ pool = Rack::Session::Pool.new(incrementor)
+ res = Rack::MockRequest.new(pool).
+ get("/", "HTTP_COOKIE" => "#{session_key}=blarghfasel")
+ res.body.should.equal '{"counter"=>1}'
+ end
+
+ specify "deletes cookies with :drop option" do
+ pool = Rack::Session::Pool.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ drop = Rack::Utils::Context.new(pool, drop_session)
+ dreq = Rack::MockRequest.new(drop)
+
+ res0 = req.get("/")
+ session = (cookie = res0["Set-Cookie"])[session_match]
+ res0.body.should.equal '{"counter"=>1}'
+ pool.pool.size.should.be 1
+
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
+ res1["Set-Cookie"][session_match].should.equal session
+ res1.body.should.equal '{"counter"=>2}'
+ pool.pool.size.should.be 1
+
+ res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
+ res2["Set-Cookie"].should.equal nil
+ res2.body.should.equal '{"counter"=>3}'
+ pool.pool.size.should.be 0
+
+ res3 = req.get("/", "HTTP_COOKIE" => cookie)
+ res3["Set-Cookie"][session_match].should.not.equal session
+ res3.body.should.equal '{"counter"=>1}'
+ pool.pool.size.should.be 1
+ end
+
+ specify "provides new session id with :renew option" do
+ pool = Rack::Session::Pool.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ renew = Rack::Utils::Context.new(pool, renew_session)
+ rreq = Rack::MockRequest.new(renew)
+
+ res0 = req.get("/")
+ session = (cookie = res0["Set-Cookie"])[session_match]
+ res0.body.should.equal '{"counter"=>1}'
+ pool.pool.size.should.be 1
+
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
+ res1["Set-Cookie"][session_match].should.equal session
+ res1.body.should.equal '{"counter"=>2}'
+ pool.pool.size.should.be 1
+
+ res2 = rreq.get("/", "HTTP_COOKIE" => cookie)
+ new_cookie = res2["Set-Cookie"]
+ new_session = new_cookie[session_match]
+ new_session.should.not.equal session
+ res2.body.should.equal '{"counter"=>3}'
+ pool.pool.size.should.be 1
+
+ res3 = req.get("/", "HTTP_COOKIE" => new_cookie)
+ res3["Set-Cookie"][session_match].should.equal new_session
+ res3.body.should.equal '{"counter"=>4}'
+ pool.pool.size.should.be 1
+ end
+
+ specify "omits cookie with :defer option" do
+ pool = Rack::Session::Pool.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+ defer = Rack::Utils::Context.new(pool, defer_session)
+ dreq = Rack::MockRequest.new(defer)
+
+ res0 = req.get("/")
+ session = (cookie = res0["Set-Cookie"])[session_match]
+ res0.body.should.equal '{"counter"=>1}'
+ pool.pool.size.should.be 1
+
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
+ res1["Set-Cookie"][session_match].should.equal session
+ res1.body.should.equal '{"counter"=>2}'
+ pool.pool.size.should.be 1
+
+ res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
+ res2["Set-Cookie"].should.equal nil
+ res2.body.should.equal '{"counter"=>3}'
+ pool.pool.size.should.be 1
+
+ res3 = req.get("/", "HTTP_COOKIE" => cookie)
+ res3["Set-Cookie"][session_match].should.equal session
+ res3.body.should.equal '{"counter"=>4}'
+ pool.pool.size.should.be 1
+ end
+
+ # anyone know how to do this better?
+ specify "multithread: should merge sessions" do
+ next unless $DEBUG
+ warn 'Running multithread tests for Session::Pool'
+ pool = Rack::Session::Pool.new(incrementor)
+ req = Rack::MockRequest.new(pool)
+
+ res = req.get('/')
+ res.body.should.equal '{"counter"=>1}'
+ cookie = res["Set-Cookie"]
+ sess_id = cookie[/#{pool.key}=([^,;]+)/,1]
+
+ delta_incrementor = lambda do |env|
+ # emulate disconjoinment of threading
+ env['rack.session'] = env['rack.session'].dup
+ Thread.stop
+ env['rack.session'][(Time.now.usec*rand).to_i] = true
+ incrementor.call(env)
+ end
+ tses = Rack::Utils::Context.new pool, delta_incrementor
+ treq = Rack::MockRequest.new(tses)
+ tnum = rand(7).to_i+5
+ r = Array.new(tnum) do
+ Thread.new(treq) do |run|
+ run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
+ end
+ end.reverse.map{|t| t.run.join.value }
+ r.each do |res|
+ res['Set-Cookie'].should.equal cookie
+ res.body.should.include '"counter"=>2'
+ end
+
+ session = pool.pool[sess_id]
+ session.size.should.be tnum+1 # counter
+ session['counter'].should.be 2 # meeeh
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_showexceptions.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_showexceptions.rb
new file mode 100755
index 00000000000..bdbc1201341
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_showexceptions.rb
@@ -0,0 +1,21 @@
+require 'test/spec'
+
+require 'rack/showexceptions'
+require 'rack/mock'
+
+context "Rack::ShowExceptions" do
+ specify "catches exceptions" do
+ res = nil
+ req = Rack::MockRequest.new(Rack::ShowExceptions.new(lambda { |env|
+ raise RuntimeError
+ }))
+ lambda {
+ res = req.get("/")
+ }.should.not.raise
+ res.should.be.a.server_error
+ res.status.should.equal 500
+
+ res.should =~ /RuntimeError/
+ res.should =~ /ShowExceptions/
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_showstatus.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_showstatus.rb
new file mode 100755
index 00000000000..7870013412f
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_showstatus.rb
@@ -0,0 +1,72 @@
+require 'test/spec'
+
+require 'rack/showstatus'
+require 'rack/mock'
+
+context "Rack::ShowStatus" do
+ specify "should provide a default status message" do
+ req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
+ [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []]
+ }))
+
+ res = req.get("/", :lint => true)
+ res.should.be.not_found
+ res.should.be.not.empty
+
+ res["Content-Type"].should.equal("text/html")
+ res.should =~ /404/
+ res.should =~ /Not Found/
+ end
+
+ specify "should let the app provide additional information" do
+ req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
+ env["rack.showstatus.detail"] = "gone too meta."
+ [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []]
+ }))
+
+ res = req.get("/", :lint => true)
+ res.should.be.not_found
+ res.should.be.not.empty
+
+ res["Content-Type"].should.equal("text/html")
+ res.should =~ /404/
+ res.should =~ /Not Found/
+ res.should =~ /too meta/
+ end
+
+ specify "should not replace existing messages" do
+ req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
+ [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]]
+ }))
+ res = req.get("/", :lint => true)
+ res.should.be.not_found
+
+ res.body.should == "foo!"
+ end
+
+ specify "should pass on original headers" do
+ headers = {"WWW-Authenticate" => "Basic blah"}
+
+ req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| [401, headers, []] }))
+ res = req.get("/", :lint => true)
+
+ res["WWW-Authenticate"].should.equal("Basic blah")
+ end
+
+ specify "should replace existing messages if there is detail" do
+ req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
+ env["rack.showstatus.detail"] = "gone too meta."
+ [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]]
+ }))
+
+ res = req.get("/", :lint => true)
+ res.should.be.not_found
+ res.should.be.not.empty
+
+ res["Content-Type"].should.equal("text/html")
+ res["Content-Length"].should.not.equal("4")
+ res.should =~ /404/
+ res.should =~ /too meta/
+ res.body.should.not =~ /foo/
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_static.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_static.rb
new file mode 100755
index 00000000000..19d2ecb7eaf
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_static.rb
@@ -0,0 +1,37 @@
+require 'test/spec'
+
+require 'rack/static'
+require 'rack/mock'
+
+class DummyApp
+ def call(env)
+ [200, {}, ["Hello World"]]
+ end
+end
+
+context "Rack::Static" do
+ root = File.expand_path(File.dirname(__FILE__))
+ OPTIONS = {:urls => ["/cgi"], :root => root}
+
+ setup do
+ @request = Rack::MockRequest.new(Rack::Static.new(DummyApp.new, OPTIONS))
+ end
+
+ specify "serves files" do
+ res = @request.get("/cgi/test")
+ res.should.be.ok
+ res.body.should =~ /ruby/
+ end
+
+ specify "404s if url root is known but it can't find the file" do
+ res = @request.get("/cgi/foo")
+ res.should.be.not_found
+ end
+
+ specify "calls down the chain if url root is not known" do
+ res = @request.get("/something/else")
+ res.should.be.ok
+ res.body.should == "Hello World"
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_thin.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_thin.rb
new file mode 100755
index 00000000000..324f64986fa
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_thin.rb
@@ -0,0 +1,91 @@
+require 'test/spec'
+
+begin
+require 'rack/handler/thin'
+require 'testrequest'
+require 'timeout'
+
+context "Rack::Handler::Thin" do
+ include TestRequest::Helpers
+
+ setup do
+ @app = Rack::Lint.new(TestRequest.new)
+ @server = nil
+ Thin::Logging.silent = true
+ @thread = Thread.new do
+ Rack::Handler::Thin.run(@app, :Host => @host='0.0.0.0', :Port => @port=9204) do |server|
+ @server = server
+ end
+ end
+ Thread.pass until @server && @server.running?
+ end
+
+ specify "should respond" do
+ lambda {
+ GET("/")
+ }.should.not.raise
+ end
+
+ specify "should be a Thin" do
+ GET("/")
+ status.should.be 200
+ response["SERVER_SOFTWARE"].should =~ /thin/
+ response["HTTP_VERSION"].should.equal "HTTP/1.1"
+ response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
+ response["SERVER_PORT"].should.equal "9204"
+ response["SERVER_NAME"].should.equal "0.0.0.0"
+ end
+
+ specify "should have rack headers" do
+ GET("/")
+ response["rack.version"].should.equal [0,3]
+ response["rack.multithread"].should.be false
+ response["rack.multiprocess"].should.be false
+ response["rack.run_once"].should.be false
+ end
+
+ specify "should have CGI headers on GET" do
+ GET("/")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.be.equal "/"
+ response["QUERY_STRING"].should.equal ""
+ response["test.postdata"].should.equal ""
+
+ GET("/test/foo?quux=1")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["REQUEST_PATH"].should.equal "/test/foo"
+ response["PATH_INFO"].should.equal "/test/foo"
+ response["QUERY_STRING"].should.equal "quux=1"
+ end
+
+ specify "should have CGI headers on POST" do
+ POST("/", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
+ status.should.equal 200
+ response["REQUEST_METHOD"].should.equal "POST"
+ response["REQUEST_PATH"].should.equal "/"
+ response["QUERY_STRING"].should.equal ""
+ response["HTTP_X_TEST_HEADER"].should.equal "42"
+ response["test.postdata"].should.equal "rack-form-data=23"
+ end
+
+ specify "should support HTTP auth" do
+ GET("/test", {:user => "ruth", :passwd => "secret"})
+ response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
+ end
+
+ specify "should set status" do
+ GET("/test?secret")
+ status.should.equal 403
+ response["rack.url_scheme"].should.equal "http"
+ end
+
+ teardown do
+ @server.stop!
+ @thread.kill
+ end
+end
+
+rescue LoadError
+ $stderr.puts "Skipping Rack::Handler::Thin tests (Thin is required). `gem install thin` and try again."
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_urlmap.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_urlmap.rb
new file mode 100755
index 00000000000..3d8fe60538f
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_urlmap.rb
@@ -0,0 +1,215 @@
+require 'test/spec'
+
+require 'rack/urlmap'
+require 'rack/mock'
+
+context "Rack::URLMap" do
+ specify "dispatches paths correctly" do
+ app = lambda { |env|
+ [200, {
+ 'X-ScriptName' => env['SCRIPT_NAME'],
+ 'X-PathInfo' => env['PATH_INFO'],
+ 'Content-Type' => 'text/plain'
+ }, [""]]
+ }
+ map = Rack::URLMap.new({
+ 'http://foo.org/bar' => app,
+ '/foo' => app,
+ '/foo/bar' => app
+ })
+
+ res = Rack::MockRequest.new(map).get("/")
+ res.should.be.not_found
+
+ res = Rack::MockRequest.new(map).get("/qux")
+ res.should.be.not_found
+
+ res = Rack::MockRequest.new(map).get("/foo")
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/foo"
+ res["X-PathInfo"].should.equal ""
+
+ res = Rack::MockRequest.new(map).get("/foo/")
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/foo"
+ res["X-PathInfo"].should.equal "/"
+
+ res = Rack::MockRequest.new(map).get("/foo/bar")
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/foo/bar"
+ res["X-PathInfo"].should.equal ""
+
+ res = Rack::MockRequest.new(map).get("/foo/bar/")
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/foo/bar"
+ res["X-PathInfo"].should.equal "/"
+
+ res = Rack::MockRequest.new(map).get("/foo///bar//quux")
+ res.status.should.equal 200
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/foo/bar"
+ res["X-PathInfo"].should.equal "//quux"
+
+ res = Rack::MockRequest.new(map).get("/foo/quux", "SCRIPT_NAME" => "/bleh")
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/bleh/foo"
+ res["X-PathInfo"].should.equal "/quux"
+
+ res = Rack::MockRequest.new(map).get("/bar", 'HTTP_HOST' => 'foo.org')
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/bar"
+ res["X-PathInfo"].should.be.empty
+
+ res = Rack::MockRequest.new(map).get("/bar/", 'HTTP_HOST' => 'foo.org')
+ res.should.be.ok
+ res["X-ScriptName"].should.equal "/bar"
+ res["X-PathInfo"].should.equal '/'
+ end
+
+
+ specify "dispatches hosts correctly" do
+ map = Rack::URLMap.new("http://foo.org/" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "foo.org",
+ "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
+ }, [""]]},
+ "http://subdomain.foo.org/" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "subdomain.foo.org",
+ "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
+ }, [""]]},
+ "http://bar.org/" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "bar.org",
+ "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
+ }, [""]]},
+ "/" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "default.org",
+ "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
+ }, [""]]}
+ )
+
+ res = Rack::MockRequest.new(map).get("/")
+ res.should.be.ok
+ res["X-Position"].should.equal "default.org"
+
+ res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "bar.org")
+ res.should.be.ok
+ res["X-Position"].should.equal "bar.org"
+
+ res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "foo.org")
+ res.should.be.ok
+ res["X-Position"].should.equal "foo.org"
+
+ res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "subdomain.foo.org", "SERVER_NAME" => "foo.org")
+ res.should.be.ok
+ res["X-Position"].should.equal "subdomain.foo.org"
+
+ res = Rack::MockRequest.new(map).get("http://foo.org/")
+ res.should.be.ok
+ res["X-Position"].should.equal "default.org"
+
+ res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "example.org")
+ res.should.be.ok
+ res["X-Position"].should.equal "default.org"
+
+ res = Rack::MockRequest.new(map).get("/",
+ "HTTP_HOST" => "example.org:9292",
+ "SERVER_PORT" => "9292")
+ res.should.be.ok
+ res["X-Position"].should.equal "default.org"
+ end
+
+ specify "should be nestable" do
+ map = Rack::URLMap.new("/foo" =>
+ Rack::URLMap.new("/bar" =>
+ Rack::URLMap.new("/quux" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "/foo/bar/quux",
+ "X-PathInfo" => env["PATH_INFO"],
+ "X-ScriptName" => env["SCRIPT_NAME"],
+ }, [""]]}
+ )))
+
+ res = Rack::MockRequest.new(map).get("/foo/bar")
+ res.should.be.not_found
+
+ res = Rack::MockRequest.new(map).get("/foo/bar/quux")
+ res.should.be.ok
+ res["X-Position"].should.equal "/foo/bar/quux"
+ res["X-PathInfo"].should.equal ""
+ res["X-ScriptName"].should.equal "/foo/bar/quux"
+ end
+
+ specify "should route root apps correctly" do
+ map = Rack::URLMap.new("/" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "root",
+ "X-PathInfo" => env["PATH_INFO"],
+ "X-ScriptName" => env["SCRIPT_NAME"]
+ }, [""]]},
+ "/foo" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "foo",
+ "X-PathInfo" => env["PATH_INFO"],
+ "X-ScriptName" => env["SCRIPT_NAME"]
+ }, [""]]}
+ )
+
+ res = Rack::MockRequest.new(map).get("/foo/bar")
+ res.should.be.ok
+ res["X-Position"].should.equal "foo"
+ res["X-PathInfo"].should.equal "/bar"
+ res["X-ScriptName"].should.equal "/foo"
+
+ res = Rack::MockRequest.new(map).get("/foo")
+ res.should.be.ok
+ res["X-Position"].should.equal "foo"
+ res["X-PathInfo"].should.equal ""
+ res["X-ScriptName"].should.equal "/foo"
+
+ res = Rack::MockRequest.new(map).get("/bar")
+ res.should.be.ok
+ res["X-Position"].should.equal "root"
+ res["X-PathInfo"].should.equal "/bar"
+ res["X-ScriptName"].should.equal ""
+
+ res = Rack::MockRequest.new(map).get("")
+ res.should.be.ok
+ res["X-Position"].should.equal "root"
+ res["X-PathInfo"].should.equal "/"
+ res["X-ScriptName"].should.equal ""
+ end
+
+ specify "should not squeeze slashes" do
+ map = Rack::URLMap.new("/" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "root",
+ "X-PathInfo" => env["PATH_INFO"],
+ "X-ScriptName" => env["SCRIPT_NAME"]
+ }, [""]]},
+ "/foo" => lambda { |env|
+ [200,
+ { "Content-Type" => "text/plain",
+ "X-Position" => "foo",
+ "X-PathInfo" => env["PATH_INFO"],
+ "X-ScriptName" => env["SCRIPT_NAME"]
+ }, [""]]}
+ )
+
+ res = Rack::MockRequest.new(map).get("/http://example.org/bar")
+ res.should.be.ok
+ res["X-Position"].should.equal "root"
+ res["X-PathInfo"].should.equal "/http://example.org/bar"
+ res["X-ScriptName"].should.equal ""
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_utils.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_utils.rb
new file mode 100755
index 00000000000..227f878546b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_utils.rb
@@ -0,0 +1,552 @@
+require 'test/spec'
+
+require 'rack/utils'
+require 'rack/lint'
+require 'rack/mock'
+
+context "Rack::Utils" do
+ specify "should escape correctly" do
+ Rack::Utils.escape("fobar").should.equal "fo%3Co%3Ebar"
+ Rack::Utils.escape("a space").should.equal "a+space"
+ Rack::Utils.escape("q1!2\"'w$5&7/z8)?\\").
+ should.equal "q1%212%22%27w%245%267%2Fz8%29%3F%5C"
+ end
+
+ specify "should escape correctly for multibyte characters" do
+ matz_name = "\xE3\x81\xBE\xE3\x81\xA4\xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsumoto
+ matz_name.force_encoding("UTF-8") if matz_name.respond_to? :force_encoding
+ Rack::Utils.escape(matz_name).should.equal '%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8'
+ matz_name_sep = "\xE3\x81\xBE\xE3\x81\xA4 \xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsu moto
+ matz_name_sep.force_encoding("UTF-8") if matz_name_sep.respond_to? :force_encoding
+ Rack::Utils.escape(matz_name_sep).should.equal '%E3%81%BE%E3%81%A4+%E3%82%82%E3%81%A8'
+ end
+
+ specify "should unescape correctly" do
+ Rack::Utils.unescape("fo%3Co%3Ebar").should.equal "fobar"
+ Rack::Utils.unescape("a+space").should.equal "a space"
+ Rack::Utils.unescape("a%20space").should.equal "a space"
+ Rack::Utils.unescape("q1%212%22%27w%245%267%2Fz8%29%3F%5C").
+ should.equal "q1!2\"'w$5&7/z8)?\\"
+ end
+
+ specify "should parse query strings correctly" do
+ Rack::Utils.parse_query("foo=bar").
+ should.equal "foo" => "bar"
+ Rack::Utils.parse_query("foo=\"bar\"").
+ should.equal "foo" => "\"bar\""
+ Rack::Utils.parse_query("foo=bar&foo=quux").
+ should.equal "foo" => ["bar", "quux"]
+ Rack::Utils.parse_query("foo=1&bar=2").
+ should.equal "foo" => "1", "bar" => "2"
+ Rack::Utils.parse_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F").
+ should.equal "my weird field" => "q1!2\"'w$5&7/z8)?"
+ Rack::Utils.parse_query("foo%3Dbaz=bar").should.equal "foo=baz" => "bar"
+ end
+
+ specify "should parse nested query strings correctly" do
+ Rack::Utils.parse_nested_query("foo").
+ should.equal "foo" => nil
+ Rack::Utils.parse_nested_query("foo=").
+ should.equal "foo" => ""
+ Rack::Utils.parse_nested_query("foo=bar").
+ should.equal "foo" => "bar"
+ Rack::Utils.parse_nested_query("foo=\"bar\"").
+ should.equal "foo" => "\"bar\""
+
+ Rack::Utils.parse_nested_query("foo=bar&foo=quux").
+ should.equal "foo" => "quux"
+ Rack::Utils.parse_nested_query("foo&foo=").
+ should.equal "foo" => ""
+ Rack::Utils.parse_nested_query("foo=1&bar=2").
+ should.equal "foo" => "1", "bar" => "2"
+ Rack::Utils.parse_nested_query("&foo=1&&bar=2").
+ should.equal "foo" => "1", "bar" => "2"
+ Rack::Utils.parse_nested_query("foo&bar=").
+ should.equal "foo" => nil, "bar" => ""
+ Rack::Utils.parse_nested_query("foo=bar&baz=").
+ should.equal "foo" => "bar", "baz" => ""
+ Rack::Utils.parse_nested_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F").
+ should.equal "my weird field" => "q1!2\"'w$5&7/z8)?"
+
+ Rack::Utils.parse_nested_query("foo[]").
+ should.equal "foo" => [nil]
+ Rack::Utils.parse_nested_query("foo[]=").
+ should.equal "foo" => [""]
+ Rack::Utils.parse_nested_query("foo[]=bar").
+ should.equal "foo" => ["bar"]
+
+ Rack::Utils.parse_nested_query("foo[]=1&foo[]=2").
+ should.equal "foo" => ["1", "2"]
+ Rack::Utils.parse_nested_query("foo=bar&baz[]=1&baz[]=2&baz[]=3").
+ should.equal "foo" => "bar", "baz" => ["1", "2", "3"]
+ Rack::Utils.parse_nested_query("foo[]=bar&baz[]=1&baz[]=2&baz[]=3").
+ should.equal "foo" => ["bar"], "baz" => ["1", "2", "3"]
+
+ Rack::Utils.parse_nested_query("x[y][z]=1").
+ should.equal "x" => {"y" => {"z" => "1"}}
+ Rack::Utils.parse_nested_query("x[y][z][]=1").
+ should.equal "x" => {"y" => {"z" => ["1"]}}
+ Rack::Utils.parse_nested_query("x[y][z]=1&x[y][z]=2").
+ should.equal "x" => {"y" => {"z" => "2"}}
+ Rack::Utils.parse_nested_query("x[y][z][]=1&x[y][z][]=2").
+ should.equal "x" => {"y" => {"z" => ["1", "2"]}}
+
+ Rack::Utils.parse_nested_query("x[y][][z]=1").
+ should.equal "x" => {"y" => [{"z" => "1"}]}
+ Rack::Utils.parse_nested_query("x[y][][z][]=1").
+ should.equal "x" => {"y" => [{"z" => ["1"]}]}
+ Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=2").
+ should.equal "x" => {"y" => [{"z" => "1", "w" => "2"}]}
+
+ Rack::Utils.parse_nested_query("x[y][][v][w]=1").
+ should.equal "x" => {"y" => [{"v" => {"w" => "1"}}]}
+ Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][v][w]=2").
+ should.equal "x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]}
+
+ Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][z]=2").
+ should.equal "x" => {"y" => [{"z" => "1"}, {"z" => "2"}]}
+ Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=a&x[y][][z]=2&x[y][][w]=3").
+ should.equal "x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]}
+
+ lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y]z=2") }.
+ should.raise(TypeError).
+ message.should.equal "expected Hash (got String) for param `y'"
+
+ lambda { Rack::Utils.parse_nested_query("x[y]=1&x[]=1") }.
+ should.raise(TypeError).
+ message.should.equal "expected Array (got Hash) for param `x'"
+
+ lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y][][w]=2") }.
+ should.raise(TypeError).
+ message.should.equal "expected Array (got String) for param `y'"
+ end
+
+ specify "should build query strings correctly" do
+ Rack::Utils.build_query("foo" => "bar").should.equal "foo=bar"
+ Rack::Utils.build_query("foo" => ["bar", "quux"]).
+ should.equal "foo=bar&foo=quux"
+ Rack::Utils.build_query("foo" => "1", "bar" => "2").
+ should.equal "foo=1&bar=2"
+ Rack::Utils.build_query("my weird field" => "q1!2\"'w$5&7/z8)?").
+ should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"
+ end
+
+ specify "should build nested query strings correctly" do
+ Rack::Utils.build_nested_query("foo" => nil).should.equal "foo"
+ Rack::Utils.build_nested_query("foo" => "").should.equal "foo="
+ Rack::Utils.build_nested_query("foo" => "bar").should.equal "foo=bar"
+
+ Rack::Utils.build_nested_query("foo" => "1", "bar" => "2").
+ should.equal "foo=1&bar=2"
+ Rack::Utils.build_nested_query("my weird field" => "q1!2\"'w$5&7/z8)?").
+ should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"
+
+ Rack::Utils.build_nested_query("foo" => [nil]).
+ should.equal "foo[]"
+ Rack::Utils.build_nested_query("foo" => [""]).
+ should.equal "foo[]="
+ Rack::Utils.build_nested_query("foo" => ["bar"]).
+ should.equal "foo[]=bar"
+
+ # The ordering of the output query string is unpredictable with 1.8's
+ # unordered hash. Test that build_nested_query performs the inverse
+ # function of parse_nested_query.
+ [{"foo" => nil, "bar" => ""},
+ {"foo" => "bar", "baz" => ""},
+ {"foo" => ["1", "2"]},
+ {"foo" => "bar", "baz" => ["1", "2", "3"]},
+ {"foo" => ["bar"], "baz" => ["1", "2", "3"]},
+ {"foo" => ["1", "2"]},
+ {"foo" => "bar", "baz" => ["1", "2", "3"]},
+ {"x" => {"y" => {"z" => "1"}}},
+ {"x" => {"y" => {"z" => ["1"]}}},
+ {"x" => {"y" => {"z" => ["1", "2"]}}},
+ {"x" => {"y" => [{"z" => "1"}]}},
+ {"x" => {"y" => [{"z" => ["1"]}]}},
+ {"x" => {"y" => [{"z" => "1", "w" => "2"}]}},
+ {"x" => {"y" => [{"v" => {"w" => "1"}}]}},
+ {"x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]}},
+ {"x" => {"y" => [{"z" => "1"}, {"z" => "2"}]}},
+ {"x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]}}
+ ].each { |params|
+ qs = Rack::Utils.build_nested_query(params)
+ Rack::Utils.parse_nested_query(qs).should.equal params
+ }
+
+ lambda { Rack::Utils.build_nested_query("foo=bar") }.
+ should.raise(ArgumentError).
+ message.should.equal "value must be a Hash"
+ end
+
+ specify "should figure out which encodings are acceptable" do
+ helper = lambda do |a, b|
+ request = Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => a))
+ Rack::Utils.select_best_encoding(a, b)
+ end
+
+ helper.call(%w(), [["x", 1]]).should.equal(nil)
+ helper.call(%w(identity), [["identity", 0.0]]).should.equal(nil)
+ helper.call(%w(identity), [["*", 0.0]]).should.equal(nil)
+
+ helper.call(%w(identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("identity")
+
+ helper.call(%w(compress gzip identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("compress")
+ helper.call(%w(compress gzip identity), [["compress", 0.5], ["gzip", 1.0]]).should.equal("gzip")
+
+ helper.call(%w(foo bar identity), []).should.equal("identity")
+ helper.call(%w(foo bar identity), [["*", 1.0]]).should.equal("foo")
+ helper.call(%w(foo bar identity), [["*", 1.0], ["foo", 0.9]]).should.equal("bar")
+
+ helper.call(%w(foo bar identity), [["foo", 0], ["bar", 0]]).should.equal("identity")
+ helper.call(%w(foo bar baz identity), [["*", 0], ["identity", 0.1]]).should.equal("identity")
+ end
+
+ specify "should return the bytesize of String" do
+ Rack::Utils.bytesize("FOO\xE2\x82\xAC").should.equal 6
+ end
+
+ specify "should return status code for integer" do
+ Rack::Utils.status_code(200).should.equal 200
+ end
+
+ specify "should return status code for string" do
+ Rack::Utils.status_code("200").should.equal 200
+ end
+
+ specify "should return status code for symbol" do
+ Rack::Utils.status_code(:ok).should.equal 200
+ end
+end
+
+context "Rack::Utils::HeaderHash" do
+ specify "should retain header case" do
+ h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...")
+ h['ETag'] = 'Boo!'
+ h.to_hash.should.equal "Content-MD5" => "d5ff4e2a0 ...", "ETag" => 'Boo!'
+ end
+
+ specify "should check existence of keys case insensitively" do
+ h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...")
+ h.should.include 'content-md5'
+ h.should.not.include 'ETag'
+ end
+
+ specify "should merge case-insensitively" do
+ h = Rack::Utils::HeaderHash.new("ETag" => 'HELLO', "content-length" => '123')
+ merged = h.merge("Etag" => 'WORLD', 'Content-Length' => '321', "Foo" => 'BAR')
+ merged.should.equal "Etag"=>'WORLD', "Content-Length"=>'321', "Foo"=>'BAR'
+ end
+
+ specify "should overwrite case insensitively and assume the new key's case" do
+ h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz")
+ h["foo-bar"] = "bizzle"
+ h["FOO-BAR"].should.equal "bizzle"
+ h.length.should.equal 1
+ h.to_hash.should.equal "foo-bar" => "bizzle"
+ end
+
+ specify "should be converted to real Hash" do
+ h = Rack::Utils::HeaderHash.new("foo" => "bar")
+ h.to_hash.should.be.instance_of Hash
+ end
+
+ specify "should convert Array values to Strings when converting to Hash" do
+ h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"])
+ h.to_hash.should.equal({ "foo" => "bar\nbaz" })
+ end
+
+ specify "should replace hashes correctly" do
+ h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz")
+ j = {"foo" => "bar"}
+ h.replace(j)
+ h["foo"].should.equal "bar"
+ end
+
+ specify "should be able to delete the given key case-sensitively" do
+ h = Rack::Utils::HeaderHash.new("foo" => "bar")
+ h.delete("foo")
+ h["foo"].should.be.nil
+ h["FOO"].should.be.nil
+ end
+
+ specify "should be able to delete the given key case-insensitively" do
+ h = Rack::Utils::HeaderHash.new("foo" => "bar")
+ h.delete("FOO")
+ h["foo"].should.be.nil
+ h["FOO"].should.be.nil
+ end
+
+ specify "should return the deleted value when #delete is called on an existing key" do
+ h = Rack::Utils::HeaderHash.new("foo" => "bar")
+ h.delete("Foo").should.equal("bar")
+ end
+
+ specify "should return nil when #delete is called on a non-existant key" do
+ h = Rack::Utils::HeaderHash.new("foo" => "bar")
+ h.delete("Hello").should.be.nil
+ end
+
+ specify "should avoid unnecessary object creation if possible" do
+ a = Rack::Utils::HeaderHash.new("foo" => "bar")
+ b = Rack::Utils::HeaderHash.new(a)
+ b.object_id.should.equal(a.object_id)
+ b.should.equal(a)
+ end
+
+ specify "should convert Array values to Strings when responding to #each" do
+ h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"])
+ h.each do |k,v|
+ k.should.equal("foo")
+ v.should.equal("bar\nbaz")
+ end
+ end
+
+end
+
+context "Rack::Utils::Context" do
+ class ContextTest
+ attr_reader :app
+ def initialize app; @app=app; end
+ def call env; context env; end
+ def context env, app=@app; app.call(env); end
+ end
+ test_target1 = proc{|e| e.to_s+' world' }
+ test_target2 = proc{|e| e.to_i+2 }
+ test_target3 = proc{|e| nil }
+ test_target4 = proc{|e| [200,{'Content-Type'=>'text/plain', 'Content-Length'=>'0'},['']] }
+ test_app = ContextTest.new test_target4
+
+ specify "should set context correctly" do
+ test_app.app.should.equal test_target4
+ c1 = Rack::Utils::Context.new(test_app, test_target1)
+ c1.for.should.equal test_app
+ c1.app.should.equal test_target1
+ c2 = Rack::Utils::Context.new(test_app, test_target2)
+ c2.for.should.equal test_app
+ c2.app.should.equal test_target2
+ end
+
+ specify "should alter app on recontexting" do
+ c1 = Rack::Utils::Context.new(test_app, test_target1)
+ c2 = c1.recontext(test_target2)
+ c2.for.should.equal test_app
+ c2.app.should.equal test_target2
+ c3 = c2.recontext(test_target3)
+ c3.for.should.equal test_app
+ c3.app.should.equal test_target3
+ end
+
+ specify "should run different apps" do
+ c1 = Rack::Utils::Context.new test_app, test_target1
+ c2 = c1.recontext test_target2
+ c3 = c2.recontext test_target3
+ c4 = c3.recontext test_target4
+ a4 = Rack::Lint.new c4
+ a5 = Rack::Lint.new test_app
+ r1 = c1.call('hello')
+ r1.should.equal 'hello world'
+ r2 = c2.call(2)
+ r2.should.equal 4
+ r3 = c3.call(:misc_symbol)
+ r3.should.be.nil
+ r4 = Rack::MockRequest.new(a4).get('/')
+ r4.status.should.be 200
+ r5 = Rack::MockRequest.new(a5).get('/')
+ r5.status.should.be 200
+ r4.body.should.equal r5.body
+ end
+end
+
+context "Rack::Utils::Multipart" do
+ specify "should return nil if content type is not multipart" do
+ env = Rack::MockRequest.env_for("/",
+ "CONTENT_TYPE" => 'application/x-www-form-urlencoded')
+ Rack::Utils::Multipart.parse_multipart(env).should.equal nil
+ end
+
+ specify "should parse multipart upload with text file" do
+ env = Rack::MockRequest.env_for("/", multipart_fixture(:text))
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["submit-name"].should.equal "Larry"
+ params["files"][:type].should.equal "text/plain"
+ params["files"][:filename].should.equal "file1.txt"
+ params["files"][:head].should.equal "Content-Disposition: form-data; " +
+ "name=\"files\"; filename=\"file1.txt\"\r\n" +
+ "Content-Type: text/plain\r\n"
+ params["files"][:name].should.equal "files"
+ params["files"][:tempfile].read.should.equal "contents"
+ end
+
+ specify "should parse multipart upload with nested parameters" do
+ env = Rack::MockRequest.env_for("/", multipart_fixture(:nested))
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["foo"]["submit-name"].should.equal "Larry"
+ params["foo"]["files"][:type].should.equal "text/plain"
+ params["foo"]["files"][:filename].should.equal "file1.txt"
+ params["foo"]["files"][:head].should.equal "Content-Disposition: form-data; " +
+ "name=\"foo[files]\"; filename=\"file1.txt\"\r\n" +
+ "Content-Type: text/plain\r\n"
+ params["foo"]["files"][:name].should.equal "foo[files]"
+ params["foo"]["files"][:tempfile].read.should.equal "contents"
+ end
+
+ specify "should parse multipart upload with binary file" do
+ env = Rack::MockRequest.env_for("/", multipart_fixture(:binary))
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["submit-name"].should.equal "Larry"
+ params["files"][:type].should.equal "image/png"
+ params["files"][:filename].should.equal "rack-logo.png"
+ params["files"][:head].should.equal "Content-Disposition: form-data; " +
+ "name=\"files\"; filename=\"rack-logo.png\"\r\n" +
+ "Content-Type: image/png\r\n"
+ params["files"][:name].should.equal "files"
+ params["files"][:tempfile].read.length.should.equal 26473
+ end
+
+ specify "should parse multipart upload with empty file" do
+ env = Rack::MockRequest.env_for("/", multipart_fixture(:empty))
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["submit-name"].should.equal "Larry"
+ params["files"][:type].should.equal "text/plain"
+ params["files"][:filename].should.equal "file1.txt"
+ params["files"][:head].should.equal "Content-Disposition: form-data; " +
+ "name=\"files\"; filename=\"file1.txt\"\r\n" +
+ "Content-Type: text/plain\r\n"
+ params["files"][:name].should.equal "files"
+ params["files"][:tempfile].read.should.equal ""
+ end
+
+ specify "should parse multipart upload with filename with semicolons" do
+ env = Rack::MockRequest.env_for("/", multipart_fixture(:semicolon))
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["files"][:type].should.equal "text/plain"
+ params["files"][:filename].should.equal "fi;le1.txt"
+ params["files"][:head].should.equal "Content-Disposition: form-data; " +
+ "name=\"files\"; filename=\"fi;le1.txt\"\r\n" +
+ "Content-Type: text/plain\r\n"
+ params["files"][:name].should.equal "files"
+ params["files"][:tempfile].read.should.equal "contents"
+ end
+
+ specify "should not include file params if no file was selected" do
+ env = Rack::MockRequest.env_for("/", multipart_fixture(:none))
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["submit-name"].should.equal "Larry"
+ params["files"].should.equal nil
+ params.keys.should.not.include "files"
+ end
+
+ specify "should parse IE multipart upload and clean up filename" do
+ env = Rack::MockRequest.env_for("/", multipart_fixture(:ie))
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["files"][:type].should.equal "text/plain"
+ params["files"][:filename].should.equal "file1.txt"
+ params["files"][:head].should.equal "Content-Disposition: form-data; " +
+ "name=\"files\"; " +
+ 'filename="C:\Documents and Settings\Administrator\Desktop\file1.txt"' +
+ "\r\nContent-Type: text/plain\r\n"
+ params["files"][:name].should.equal "files"
+ params["files"][:tempfile].read.should.equal "contents"
+ end
+
+ specify "rewinds input after parsing upload" do
+ options = multipart_fixture(:text)
+ input = options[:input]
+ env = Rack::MockRequest.env_for("/", options)
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["submit-name"].should.equal "Larry"
+ params["files"][:filename].should.equal "file1.txt"
+ input.read.length.should.equal 197
+ end
+
+ specify "builds multipart body" do
+ files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt"))
+ data = Rack::Utils::Multipart.build_multipart("submit-name" => "Larry", "files" => files)
+
+ options = {
+ "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x",
+ "CONTENT_LENGTH" => data.length.to_s,
+ :input => StringIO.new(data)
+ }
+ env = Rack::MockRequest.env_for("/", options)
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["submit-name"].should.equal "Larry"
+ params["files"][:filename].should.equal "file1.txt"
+ params["files"][:tempfile].read.should.equal "contents"
+ end
+
+ specify "builds nested multipart body" do
+ files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt"))
+ data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => files}])
+
+ options = {
+ "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x",
+ "CONTENT_LENGTH" => data.length.to_s,
+ :input => StringIO.new(data)
+ }
+ env = Rack::MockRequest.env_for("/", options)
+ params = Rack::Utils::Multipart.parse_multipart(env)
+ params["people"][0]["submit-name"].should.equal "Larry"
+ params["people"][0]["files"][:filename].should.equal "file1.txt"
+ params["people"][0]["files"][:tempfile].read.should.equal "contents"
+ end
+
+ specify "can parse fields that end at the end of the buffer" do
+ input = File.read(multipart_file("bad_robots"))
+
+ req = Rack::Request.new Rack::MockRequest.env_for("/",
+ "CONTENT_TYPE" => "multipart/form-data, boundary=1yy3laWhgX31qpiHinh67wJXqKalukEUTvqTzmon",
+ "CONTENT_LENGTH" => input.size,
+ :input => input)
+
+ req.POST['file.path'].should.equal "/var/tmp/uploads/4/0001728414"
+ req.POST['addresses'].should.not.equal nil
+ end
+
+ specify "builds complete params with the chunk size of 16384 slicing exactly on boundary" do
+ data = File.open(multipart_file("fail_16384_nofile")) { |f| f.read }.gsub(/\n/, "\r\n")
+ options = {
+ "CONTENT_TYPE" => "multipart/form-data; boundary=----WebKitFormBoundaryWsY0GnpbI5U7ztzo",
+ "CONTENT_LENGTH" => data.length.to_s,
+ :input => StringIO.new(data)
+ }
+ env = Rack::MockRequest.env_for("/", options)
+ params = Rack::Utils::Multipart.parse_multipart(env)
+
+ params.should.not.equal nil
+ params.keys.should.include "AAAAAAAAAAAAAAAAAAA"
+ params["AAAAAAAAAAAAAAAAAAA"].keys.should.include "PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"
+ params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"].keys.should.include "new"
+ params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"].keys.should.include "-2"
+ params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"].keys.should.include "ba_unit_id"
+ params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"]["ba_unit_id"].should.equal "1017"
+ end
+
+ specify "should return nil if no UploadedFiles were used" do
+ data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}])
+ data.should.equal nil
+ end
+
+ specify "should raise ArgumentError if params is not a Hash" do
+ lambda { Rack::Utils::Multipart.build_multipart("foo=bar") }.
+ should.raise(ArgumentError).
+ message.should.equal "value must be a Hash"
+ end
+
+ private
+ def multipart_fixture(name)
+ file = multipart_file(name)
+ data = File.open(file, 'rb') { |io| io.read }
+
+ type = "multipart/form-data; boundary=AaB03x"
+ length = data.respond_to?(:bytesize) ? data.bytesize : data.size
+
+ { "CONTENT_TYPE" => type,
+ "CONTENT_LENGTH" => length.to_s,
+ :input => StringIO.new(data) }
+ end
+
+ def multipart_file(name)
+ File.join(File.dirname(__FILE__), "multipart", name.to_s)
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_webrick.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_webrick.rb
new file mode 100755
index 00000000000..599425c4f3d
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rack_webrick.rb
@@ -0,0 +1,130 @@
+require 'test/spec'
+
+require 'rack/handler/webrick'
+require 'rack/lint'
+require 'rack/response'
+require 'testrequest'
+
+Thread.abort_on_exception = true
+
+context "Rack::Handler::WEBrick" do
+ include TestRequest::Helpers
+
+ setup do
+ @server = WEBrick::HTTPServer.new(:Host => @host='0.0.0.0',
+ :Port => @port=9202,
+ :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
+ :AccessLog => [])
+ @server.mount "/test", Rack::Handler::WEBrick,
+ Rack::Lint.new(TestRequest.new)
+ Thread.new { @server.start }
+ trap(:INT) { @server.shutdown }
+ end
+
+ specify "should respond" do
+ lambda {
+ GET("/test")
+ }.should.not.raise
+ end
+
+ specify "should be a WEBrick" do
+ GET("/test")
+ status.should.be 200
+ response["SERVER_SOFTWARE"].should =~ /WEBrick/
+ response["HTTP_VERSION"].should.equal "HTTP/1.1"
+ response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
+ response["SERVER_PORT"].should.equal "9202"
+ response["SERVER_NAME"].should.equal "0.0.0.0"
+ end
+
+ specify "should have rack headers" do
+ GET("/test")
+ response["rack.version"].should.equal [1,1]
+ response["rack.multithread"].should.be true
+ response["rack.multiprocess"].should.be false
+ response["rack.run_once"].should.be false
+ end
+
+ specify "should have CGI headers on GET" do
+ GET("/test")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.be.equal ""
+ response["QUERY_STRING"].should.equal ""
+ response["test.postdata"].should.equal ""
+
+ GET("/test/foo?quux=1")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.equal "/foo"
+ response["QUERY_STRING"].should.equal "quux=1"
+
+ GET("/test/foo%25encoding?quux=1")
+ response["REQUEST_METHOD"].should.equal "GET"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/"
+ response["PATH_INFO"].should.equal "/foo%25encoding"
+ response["QUERY_STRING"].should.equal "quux=1"
+ end
+
+ specify "should have CGI headers on POST" do
+ POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
+ status.should.equal 200
+ response["REQUEST_METHOD"].should.equal "POST"
+ response["SCRIPT_NAME"].should.equal "/test"
+ response["REQUEST_PATH"].should.equal "/"
+ response["QUERY_STRING"].should.equal ""
+ response["HTTP_X_TEST_HEADER"].should.equal "42"
+ response["test.postdata"].should.equal "rack-form-data=23"
+ end
+
+ specify "should support HTTP auth" do
+ GET("/test", {:user => "ruth", :passwd => "secret"})
+ response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
+ end
+
+ specify "should set status" do
+ GET("/test?secret")
+ status.should.equal 403
+ response["rack.url_scheme"].should.equal "http"
+ end
+
+ specify "should correctly set cookies" do
+ @server.mount "/cookie-test", Rack::Handler::WEBrick,
+ Rack::Lint.new(lambda { |req|
+ res = Rack::Response.new
+ res.set_cookie "one", "1"
+ res.set_cookie "two", "2"
+ res.finish
+ })
+
+ Net::HTTP.start(@host, @port) { |http|
+ res = http.get("/cookie-test")
+ res.code.to_i.should.equal 200
+ res.get_fields("set-cookie").should.equal ["one=1", "two=2"]
+ }
+ end
+
+ specify "should provide a .run" do
+ block_ran = false
+ catch(:done) {
+ Rack::Handler::WEBrick.run(lambda {},
+ {:Port => 9210,
+ :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
+ :AccessLog => []}) { |server|
+ block_ran = true
+ server.should.be.kind_of WEBrick::HTTPServer
+ @s = server
+ throw :done
+ }
+ }
+ block_ran.should.be true
+ @s.shutdown
+ end
+
+ teardown do
+ @server.shutdown
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rackup.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rackup.rb
new file mode 100755
index 00000000000..55e7dc89e3b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rack-1.1.3/test/spec_rackup.rb
@@ -0,0 +1,164 @@
+require 'test/spec'
+require 'testrequest'
+require 'rack/server'
+require 'open3'
+
+begin
+require "mongrel"
+
+context "rackup" do
+ include TestRequest::Helpers
+
+ def run_rackup(*args)
+ options = args.last.is_a?(Hash) ? args.pop : {}
+ flags = args.first
+ @host = options[:host] || "0.0.0.0"
+ @port = options[:port] || 9292
+
+ Dir.chdir("#{root}/test/rackup") do
+ @in, @rackup, @err = Open3.popen3("#{ruby} -S #{rackup} #{flags}")
+ end
+
+ return if options[:port] == false
+
+ # Wait until the server is available
+ i = 0
+ begin
+ GET("/")
+ rescue
+ i += 1
+ if i > 40
+ Dir["#{root}/**/*.pid"].each {|f|
+ Process.kill(9, File.read(f)) rescue nil
+ File.delete(f)
+ }
+ raise "Server did not start"
+ end
+ sleep 0.05
+ retry
+ end
+ end
+
+ def output
+ @rackup.read
+ end
+
+ after do
+ # This doesn't actually return a response, so we rescue
+ GET "/die" rescue nil
+
+ Dir["#{root}/**/*.pid"].each do |file|
+ Process.kill(9, File.read(file).strip.to_i) rescue nil
+ File.delete(file)
+ end
+
+ File.delete("#{root}/log_output") if File.exist?("#{root}/log_output")
+ end
+
+ specify "rackup" do
+ run_rackup
+ response["PATH_INFO"].should.equal '/'
+ response["test.$DEBUG"].should.be false
+ response["test.$EVAL"].should.be nil
+ response["test.$VERBOSE"].should.be false
+ response["test.Ping"].should.be nil
+ response["SERVER_SOFTWARE"].should.not =~ /webrick/
+ end
+
+ specify "rackup --help" do
+ run_rackup "--help", :port => false
+ output.should.match /--port/
+ end
+
+ specify "rackup --port" do
+ run_rackup "--port 9000", :port => 9000
+ response["SERVER_PORT"].should.equal "9000"
+ end
+
+ specify "rackup --debug" do
+ run_rackup "--debug"
+ response["test.$DEBUG"].should.be true
+ end
+
+ specify "rackup --eval" do
+ run_rackup %{--eval "BUKKIT = 'BUKKIT'"}
+ response["test.$EVAL"].should.equal "BUKKIT"
+ end
+
+ specify "rackup --warn" do
+ run_rackup %{--warn}
+ response["test.$VERBOSE"].should.be true
+ end
+
+ specify "rackup --include" do
+ run_rackup %{--include /foo/bar}
+ response["test.$LOAD_PATH"].should.include "/foo/bar"
+ end
+
+ specify "rackup --require" do
+ run_rackup %{--require ping}
+ response["test.Ping"].should.equal "constant"
+ end
+
+ specify "rackup --server" do
+ run_rackup %{--server webrick}
+ response["SERVER_SOFTWARE"].should =~ /webrick/i
+ end
+
+ specify "rackup --host" do
+ run_rackup %{--host 127.0.0.1}, :host => "127.0.0.1"
+ response["REMOTE_ADDR"].should.equal "127.0.0.1"
+ end
+
+ specify "rackup --daemonize --pid" do
+ run_rackup "--daemonize --pid testing.pid"
+ status.should.be 200
+ @rackup.should.be.eof?
+ Dir["#{root}/**/testing.pid"].should.not.be.empty?
+ end
+
+ specify "rackup --pid" do
+ run_rackup %{--pid testing.pid}
+ status.should.be 200
+ Dir["#{root}/**/testing.pid"].should.not.be.empty?
+ end
+
+ specify "rackup --version" do
+ run_rackup %{--version}, :port => false
+ output.should =~ /Rack 1.1/
+ end
+
+ specify "rackup --env development includes lint" do
+ run_rackup
+ GET("/broken_lint")
+ status.should.be 500
+ end
+
+ specify "rackup --env deployment does not include lint" do
+ run_rackup %{--env deployment}
+ GET("/broken_lint")
+ status.should.be 200
+ end
+
+ specify "rackup --env none does not include lint" do
+ run_rackup %{--env none}
+ GET("/broken_lint")
+ status.should.be 200
+ end
+
+ specify "rackup --env deployment does log" do
+ run_rackup %{--env deployment}
+ log = File.read(response["test.stderr"])
+ log.should.be.empty?
+ end
+
+ specify "rackup --env none does not log" do
+ run_rackup %{--env none}
+ GET("/")
+ log = File.read(response["test.stderr"])
+ log.should.be.empty?
+ end
+end
+rescue LoadError
+ $stderr.puts "Skipping rackup --server tests (mongrel is required). `gem install thin` and try again."
+end
\ No newline at end of file
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/CHANGELOG b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/CHANGELOG
old mode 100644
new mode 100755
similarity index 99%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/CHANGELOG
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/CHANGELOG
index a94249b6991..2e29214239c
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/CHANGELOG
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/CHANGELOG
@@ -1,8 +1,29 @@
-*Edge*
+*2.3.11 (February 9, 2011)*
+
+*2.3.10 (October 15, 2010)*
+
+*2.3.9 (September 4, 2010)*
+
+* Deprecates config.load_(once_)paths in favor of autolaod_(once_)paths. [fxn]
+
+
+*2.3.8 (May 24, 2010)*
+*2.3.7 (May 24, 2010)*
+
+* Version bump.
+
+
+*2.3.6 (May 23, 2010)*
+
+* Added config/initializers/cookie_verification_secret.rb with an auto-generated secret for using ActionController::Base#cookies.signed [DHH]
* Fixed that the debugger wouldn't go into IRB mode because of left-over ARGVs [DHH]
-* 1.9 compatibility
+
+*2.3.5 (November 25, 2009)*
+
+* Ruby 1.9 compatibility
+
*2.3.4 (September 4, 2009)*
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/MIT-LICENSE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/MIT-LICENSE
old mode 100644
new mode 100755
similarity index 89%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/MIT-LICENSE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/MIT-LICENSE
index e6df48772fe..86bcb23b7cf
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/MIT-LICENSE
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/MIT-LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2009 David Heinemeier Hansson
+Copyright (c) 2004-2010 David Heinemeier Hansson
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/README b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/README
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/README
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/README
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/Rakefile b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/Rakefile
old mode 100644
new mode 100755
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/Rakefile
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/Rakefile
index bf88f338702..c3d8eeb7152
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/Rakefile
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/Rakefile
@@ -1,7 +1,7 @@
require 'rake'
require 'rake/testtask'
-require 'rake/rdoctask'
-require 'rake/gempackagetask'
+require 'rdoc/task'
+require 'rubygems/package_task'
require 'date'
require 'rbconfig'
@@ -267,7 +267,7 @@ task :generate_app_doc do
system %{cd #{PKG_DESTINATION}; rake doc:app}
end
-Rake::RDocTask.new { |rdoc|
+RDoc::Task.new { |rdoc|
rdoc.rdoc_dir = 'doc'
rdoc.title = "Railties -- Gluing the Engine to the Rails"
rdoc.options << '--line-numbers' << '--inline-source' << '--accessor' << 'cattr_accessor=object'
@@ -296,7 +296,6 @@ PKG_FILES = FileList[
'doc/**/*',
'dispatches/**/*',
'environments/**/*',
- 'guides/**/*',
'helpers/**/*',
'generators/**/*',
'html/**/*',
@@ -314,20 +313,18 @@ spec = Gem::Specification.new do |s|
EOF
s.add_dependency('rake', '>= 0.8.3')
- s.add_dependency('activesupport', '= 2.3.5' + PKG_BUILD)
- s.add_dependency('activerecord', '= 2.3.5' + PKG_BUILD)
- s.add_dependency('actionpack', '= 2.3.5' + PKG_BUILD)
- s.add_dependency('actionmailer', '= 2.3.5' + PKG_BUILD)
- s.add_dependency('activeresource', '= 2.3.5' + PKG_BUILD)
+ s.add_dependency('activesupport', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('activerecord', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('actionpack', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('actionmailer', '= 2.3.14' + PKG_BUILD)
+ s.add_dependency('activeresource', '= 2.3.14' + PKG_BUILD)
s.rdoc_options << '--exclude' << '.'
- s.has_rdoc = false
- s.files = PKG_FILES.to_a.delete_if {|f| f =~ %r{\.svn|guides/output}}
+ s.files = PKG_FILES
s.require_path = 'lib'
s.bindir = "bin" # Use these for applications.
s.executables = ["rails"]
- s.default_executable = "rails"
s.author = "David Heinemeier Hansson"
s.email = "david@loudthinking.com"
@@ -335,7 +332,7 @@ spec = Gem::Specification.new do |s|
s.rubyforge_project = "rails"
end
-Rake::GemPackageTask.new(spec) do |pkg|
+Gem::PackageTask.new(spec) do |pkg|
pkg.gem_spec = spec
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails/info.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails/info.rb
old mode 100644
new mode 100755
similarity index 96%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails/info.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails/info.rb
index 8c858d23fb3..b2799f0955f
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails/info.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails/info.rb
@@ -38,7 +38,7 @@ module Rails
def freeze_edge_version
if File.exist?(rails_vendor_root)
begin
- Dir[File.join(rails_vendor_root, 'REVISION_*')].first.scan(/_(\d+)$/).first.first
+ File.readlines(File.join(rails_vendor_root,'REVISION')).first.strip
rescue
Dir[File.join(rails_vendor_root, 'TAG_*')].first.scan(/_(.+)$/).first.first rescue 'unknown'
end
@@ -55,7 +55,7 @@ module Rails
alias inspect to_s
def to_html
- returning table = '
' do
+ '
'.tap do |table|
properties.each do |(name, value)|
table << %(
#{CGI.escapeHTML(name.to_s)}
)
table << %(
#{CGI.escapeHTML(value.to_s)}
)
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails/info_controller.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails/info_controller.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails/info_helper.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails/info_helper.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails_info_controller.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/builtin/rails_info/rails_info_controller.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/frontbase.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/frontbase.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/frontbase.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/frontbase.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/ibm_db.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/ibm_db.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/ibm_db.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/ibm_db.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/mysql.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/mysql.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/mysql.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/mysql.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/oracle.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/oracle.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/oracle.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/oracle.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/postgresql.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/postgresql.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/postgresql.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/postgresql.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/sqlite2.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/sqlite2.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/sqlite2.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/sqlite2.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/sqlite3.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/sqlite3.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/databases/sqlite3.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/databases/sqlite3.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/favicon.ico b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/empty.log
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/favicon.ico
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/empty.log
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/backtrace_silencers.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/backtrace_silencers.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/backtrace_silencers.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/backtrace_silencers.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/cookie_verification_secret.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/cookie_verification_secret.rb
new file mode 100755
index 00000000000..9f05cd5a313
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/cookie_verification_secret.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# Your secret key for verifying the integrity of signed cookies.
+# If you change this key, all old signed cookies will become invalid!
+# Make sure the secret is at least 30 characters and all random,
+# no regular words or you'll be exposed to dictionary attacks.
+ActionController::Base.cookie_verifier_secret = '<%= app_secret %>';
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/inflections.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/inflections.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/inflections.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/inflections.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/mime_types.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/mime_types.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/mime_types.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/mime_types.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/new_rails_defaults.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/new_rails_defaults.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/new_rails_defaults.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/new_rails_defaults.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/session_store.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/session_store.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/initializers/session_store.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/initializers/session_store.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/locales/en.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/locales/en.yml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/locales/en.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/locales/en.yml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/routes.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/routes.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/routes.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/routes.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/seeds.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/seeds.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/configs/seeds.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/configs/seeds.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/config.ru b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/config.ru
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/config.ru
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/config.ru
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/dispatch.fcgi b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/dispatch.fcgi
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/dispatch.fcgi
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/dispatch.fcgi
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/dispatch.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/dispatch.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/dispatch.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/dispatch.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/gateway.cgi b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/gateway.cgi
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/dispatches/gateway.cgi
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/dispatches/gateway.cgi
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/boot.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/boot.rb
old mode 100644
new mode 100755
similarity index 86%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/boot.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/boot.rb
index dd5e3b69164..6686664cd94
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/boot.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/boot.rb
@@ -62,8 +62,12 @@ module Rails
gem 'rails'
end
rescue Gem::LoadError => load_error
- $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
- exit 1
+ if load_error.message =~ /Could not find RubyGem rails/
+ STDERR.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
+ exit 1
+ else
+ raise
+ end
end
class << self
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/development.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/development.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/development.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/development.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/environment.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/environment.rb
old mode 100644
new mode 100755
similarity index 97%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/environment.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/environment.rb
index 4a2df363073..250deaf481d
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/environment.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/environment.rb
@@ -12,7 +12,7 @@ Rails::Initializer.run do |config|
# -- all .rb files in that directory are automatically loaded.
# Add additional load paths for your own custom dirs
- # config.load_paths += %W( #{RAILS_ROOT}/extras )
+ # config.autoload_paths += %W( #{RAILS_ROOT}/extras )
# Specify gems that this application depends on and have them installed with rake gems:install
# config.gem "bj"
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/production.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/production.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/production.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/production.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/environments/test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/environments/test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/fresh_rakefile b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/fresh_rakefile
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/fresh_rakefile
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/fresh_rakefile
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/application_controller.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/application_controller.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/application_controller.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/application_controller.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/application_helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/application_helper.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/application_helper.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/application_helper.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/performance_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/performance_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/performance_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/performance_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/test_helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/test_helper.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/helpers/test_helper.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/helpers/test_helper.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/404.html b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/404.html
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/404.html
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/404.html
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/422.html b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/422.html
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/422.html
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/422.html
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/500.html b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/500.html
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/500.html
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/500.html
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/favicon.ico
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/favicon.ico
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/images/rails.png b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/images/rails.png
new file mode 100755
index 0000000000000000000000000000000000000000..d5edc04e65f555e3ba4dcdaad39dc352e75b575e
GIT binary patch
literal 6646
zcmVpVcQya!6@Dsmj@#jv7C*qh
zIhOJ6_K0n?*d`*T7TDuW-}m`9Kz3~>+7`DUkbAraU%yi+R{N~~XA2B%zt-4=tLimUer9!2M~N{G5bftFij_O&)a
zsHnOppFIzebQ`RA0$!yUM-lg#*o@_O2wf422iLnM6cU(ktYU8#;*G!QGhIy9+ZfzKjLuZo%@a
z-i@9A`X%J{^;2q&ZHY3C(B%gqCPW!8{9C0PMcNZccefK){s|V5-xxtHQc@uf>XqhD
z7#N^siWqetgq29aX>G^olMf=bbRF6@Y(}zYxw6o!9WBdG1unP}<(V;zKlcR2p86fq
zYjaqB^;Ycq>Wy@5T1xOzG3tucG3e%nPvajaN{CrFbnzv^9&K3$NrDm*eQe4`BGQ2bI;dFEwyt>hK%X!L6)82aOZp
zsrGcJ#7PoX7)s|~t6is?FfX*7vWdREi58tiY4S)t6u*|kv?J)d_$r+CH#eZ?Ef+I_
z(eVlX8dh~4QP?o*E`_MgaNFIKj*rtN(0Raj3ECjSXcWfd#27NYs&~?t`QZFT}!Zaf=ldZIhi}LhQlqLo+o5(Pvui&{7PD__^53f9j>HW`Q
z_V8X5j~$|GP9qXu0C#!@RX2}lXD35@3N5{BkUi%jtaPQ*H6OX2zIz4QPuqmTv3`vG{zc>l3t0B9E75h<
z8&twGh%dp7WPNI+tRl%#gf2}Epg8st+~O4GjtwJsXfN;EjAmyr6z5dnaFU(;IV~QK
zW62fogF~zA``(Q>_SmD!izc6Y4zq*97|NAPHp1j5X7Op2%;GLYm>^HEMyObo6s7l)
zE3n|aOHi5~B84!}b^b*-aL2E)>OEJX_tJ~t<#VJ?bT?lDwyDB&5SZ$_1aUhmAY}#*
zs@V1I+c5md9%R-o#_DUfqVtRk>59{+Opd5Yu%dAU#VQW}^m}x-30ftBx#527{^pI4
z6l2C6C7QBG$~NLYb3rVdLD#Z{+SleOp`(Lg5J}`kxdTHe(nV5BdpLrD=l|)e$gEqA
zwI6vuX-PFCtcDIH>bGY2dwq&^tf+&R?)nY-@7_j%4CMRAF}C9w%p86W<2!aSY$p+k
zrkFtG=cGo38RnrG28;?PNk%7a@faaXq&MS*&?1Z`7Ojw7(#>}ZG4nMAs3VXxfdW>i
zY4VX02c5;f7jDPY_7@Oa)CHH}cH<3y#}_!nng^W+h1e-RL*YFYOteC@h?BtJZ+?sE
zy)P5^8Mregx{nQaw1NY-|3>{Z)|0`?zc?G2-acYiSU`tj#sSGfm7k86ZQ0SQgPevcklHxM9<~4yW
zR796sisf1|!#{Z=e^)0;_8iUhL8g(;j$l=02FTPZ(dZV@s#aQ`DHkLM6=YsbE4iQ!b#*374l0Jw5;jD%J;vQayq=nD8-kHI~f9Ux|32SJUM`>
zGp2UGK*4t?cRKi!2he`zI#j0f${I#f-jeT?u_C7S4WsA0)ryi-1L0(@%pa^&g5x=e
z=KW9+Nn(=)1T&S8g_ug%dgk*~l2O-$r9#zEGBdQsweO%t*6F4c8JC36JtTizCyy+E4h%G(+
z5>y$%0txMuQ$e~wjFgN(xrAndHQo`Za+K*?gUVDTBV&Ap^}|{w#CIq{DRe}+l@(Ec
zCCV6f_?dY_{+f{}6XGn!pL_up?}@>KijT^$w#Lb6iHW&^8RP~g6y=vZBXx~B9nI^i
zGexaPjcd(%)zGw!DG_dDwh-7x6+ST#R^${iz_M$uM!da8SxgB_;Z0G%Y*HpvLjKw;
zX=ir7i1O$-T|*TBoH$dlW+TLf5j5sep^DlDtkox;Kg{Q%EXWedJq@J@%VAcK)j3y1
zShM!CS#qax;D@RND%2t3W6kv+#Ky0F9<3YKDbV^XJ=^$s(Vtza8V72YY)577nnldI
zHMA0PUo!F3j(ubV*CM@PiK<^|RM2(DuCbG7`W}Rg(xdYC>C~
z;1KJGLN&$cRxSZunjXcntykmpFJ7;dk>shY(DdK&3K_JDJ6R%D`e~6Qv67@Rwu+q9
z*|NG{r}4F8f{Dfzt0+cZMd$fvlX3Q`dzM46@r?ISxr;9gBTG2rmfiGOD*#c*3f)cc
zF+PFZobY$-^}J8
z%n=h4;x2}cP!@SiVd!v;^Wwo0(N??-ygDr7gG^NKxDjSo{5T{?$|Qo5;8V!~D6O;F*I
zuY!gd@+2j_8Rn=UWDa#*4E2auWoGYDddMW7t0=yuC(xLWky?vLimM~!$3fgu!dR>p
z?L?!8z>6v$|MsLb&dU?ob)Zd!B)!a*Z2eTE7
zKCzP&e}XO>CT%=o(v+WUY`Az*`9inbTG&
z_9_*oQKw;sc8{ipoBC`S4Tb7a%tUE)1fE+~ib$;|(`|4QbXc2>VzFi%1nX%ti;^s3~NIL0R}!!a{0A
zyCRp0F7Y&vcP&3`&Dzv5!h}F2R-h&QhIfq*ts&qO13{_CP}1*sLz!hI9VoTSzTu
zok5pV0+~jrGymE~{TgbS#nN5+*rF7ij)cnSLQw0Ltc70zmk|O!O(kM<3zw-sUvkx~
z2`y+{xAwKSa-0}n7{$I@Zop7CWy%_xIeN1e-7&OjQ6vZZPbZ^3_
z(~=;ZSP98S2oB#35b1~_x`2gWiPdIVddEf`AD9<@c_s)TM;3J$T_l?pr{<7PTgdiy
zBc5IGx)g~n=s+Z$RzYCmv8PlJu%gkh^;%mTGMc)UwRINVD~K;`Rl!5@hhGg;y>5qj
zq|u-Yf0q_~Y+Mbivkkfa0nAOzB1acnytogsj_m7FB(-FjihMek#GAU4M!iXCgdK8a
zjoKm?*|iz7;dHm4$^hh(`Ufl>yb>$hjIA-;>{>C}G0Di%bGvUsJkfLAV|xq32c>RqJqTBJ3Dx
zYC;*Dt|S$b6)aCJFnK(Eey$M1DpVV~_MIhwK>
zygo(jWC|_IRw|456`roEyXtkNLWNAt-4N1qyN$I@DvBzt;e|?g<*HK1%~cq|^u*}C
zmMrwh>{QAq?Ar~4l^DqT%SQ)w)FA(#7#u+N;>E975rYML>)LgE`2<7nN=C1pC{IkV
zVw}_&v6j&S?QVh*)wF3#XmE@0($^BVl1969csLKUBNer{suVd!a~B!0MxWY?=(GD6
zy$G&ERFR#i6G4=2F?R4}Mz3B?3tnpoX3)qFF2sh9-Jn*e%9F>i{WG7$_~XyOO2!+@
z6k+38KyD@-0=uee54D0!Z1@B^ilj~StchdOn(*qvg~s5QJpWGc!6U^Aj!xt-HZn_V
zS%|fyQ5YS@EP2lBIodXCLjG_+a)%En+7jzngk@J>6D~^xbxKkvf-R0-c%mX+o{?&j
zZZ%RxFeav8Y0gkwtdtrwUb-i0Egd2C=ADu%w5VV-hNJvl)GZ?M;y$!?b=S+wKRK7Q
zcOjPT!p<*#8m;TsBih=@Xc&c)?Vy`Ys>IvK@|1%N+M6J-^RCRaZcPP2eQh9DEGZr+
z?8B~wF14mk4Xkuen{wY^CWwS1PI<8gikY*)3?RSo5l8es4*J
z43k_BIwc}of=6Pfs%xIxlMDGOJN
zvl!a>G)52XMqA%fbgkZi%)%bN*ZzZw2!rn4@+J)2eK#kWuEW{)W~-`y1vhA5-7p%R
z&f5N!a9f8cK1Xa=O}=9{wg%}Ur^+8Y(!UCeqw>%wj@|bYHD-bZO~mk3L$9_^MmF3G
zvCiK^e@q6G?tHkM8%GqsBMZaB20W$UEt_5r~jc#WlR>Bv{6W>A=!#InoY
zLOd04@Rz?*7PpW8u|+}bt`?+Z(GsX{Br4A2$ZZ(26Degmr9`O=t2KgHTL*==R3xcP
z&Y(J7hC@6_x8zVz!CX3l4Xtss6i7r#E6kXMNN1~>9KTRzewfp))ij%)SBBl0fZdYP
zd!zzQD5u8yk-u|41|Rqz7_tCFUMThZJVj)yQf6^Cwtn|Ew6cm5J|u1Bq>MWX-AfB&NE;C
z62@=-0le`E6-CurMKjoIy)BuUmhMGJb}pPx!@GLWMT+wH2R?wA=MEy)o57~feFp8P
zY@YXAyt4<1FD<|iw{FGQu~GEI<4C64)V*QiVk+VzOV^9GWf4ir#oYgHJz!wq>iZV#_6@_{)&lum)4x
z_Of*CLVQ7wdT#XT-(h0qH%mcIF7yzMIvvTN3bPceK>PpJi(=3Nny
zbSn}p$dGKQUlX&-t~RR)#F7I<8NCD^yke(vdf#4^aAh}M-{tS9-&^tC4`KU_pToXy
z+|K8sx}a)Kh{h{;*V1#hs1xB%(?j>)g~`Wv(9F)f=Qn)(daVB7hZtcp^#LrEr1T1J
zZSJ*lVyVVjhy)mkex9Whn=EinKDHe@KlfQI-Fl7M?-c~HnW0;C;+MbUY8?FToy;A+
zs&Nc7VZ=Of+e!G6s#+S5WBU)kgQq_I1@!uH74GJ-+O|%0HXm9Mqlvp|j%0`T>fr9^
zK;qo>XdwZW<>%tTA+<(1^6(>=-2N;hRgBnjvEjN;VbKMbFg--WrGy|XESoH1p|M4`
z86(gC^vB4qScASZ&cdpT{~QDN-jC|GJ(RYoW1VW4!SSn-
zhQds9&RBKn6M&GVK_Aayt(Hekbnw=tr>f
z^o@v9_*iQO1*zeOrts9Q-$pc@!StS&kz$cF`s@pM`rmJXTP&h5G)A74!0e%ZJbl}(
zssI|_!%~_hZFypv*S^JE5N&Kvmx7KiG<|fGMO=WrH+@Yhuj+KwiS#l4>@%2nl
zS)mDikfmokO4q2A)hRVZBq2-5q&XC>%HOLkOYxZ66(s86?=0s4z5xbiOV)}L-&6b)h6(~CIaR#JNw~46+WBiU7IhB
zq!NuR4!TsYnyBg>@G=Ib*cMq^k<}AMpCeYEf&dzfiGI-wOQ7hb+nA
zkN7_){y&c3xC0
AQ~&?~
literal 0
HcmV?d00001
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/index.html b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/index.html
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/index.html
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/index.html
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/application.js b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/application.js
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/application.js
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/application.js
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/controls.js b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/controls.js
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/controls.js
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/controls.js
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/dragdrop.js b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/dragdrop.js
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/dragdrop.js
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/dragdrop.js
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/effects.js b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/effects.js
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/effects.js
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/effects.js
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/prototype.js b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/prototype.js
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/javascripts/prototype.js
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/javascripts/prototype.js
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/robots.txt b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/robots.txt
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/html/robots.txt
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/html/robots.txt
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/code_statistics.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/code_statistics.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/code_statistics.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/code_statistics.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/about.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/about.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/about.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/about.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/console.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/console.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/console.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/console.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/dbconsole.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/dbconsole.rb
old mode 100644
new mode 100755
similarity index 99%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/dbconsole.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/dbconsole.rb
index e6f11a45db6..b4160494825
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/dbconsole.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/dbconsole.rb
@@ -45,7 +45,7 @@ def find_cmd(*commands)
end
case config["adapter"]
-when "mysql"
+when /^mysql/
args = {
'host' => '--host',
'port' => '--port',
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/destroy.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/destroy.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/destroy.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/destroy.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/generate.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/generate.rb
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/generate.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/generate.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/ncgi/listener b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/ncgi/listener
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/ncgi/listener
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/ncgi/listener
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/ncgi/tracker b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/ncgi/tracker
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/ncgi/tracker
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/ncgi/tracker
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/performance/benchmarker.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/performance/benchmarker.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/performance/benchmarker.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/performance/benchmarker.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/performance/profiler.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/performance/profiler.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/performance/profiler.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/performance/profiler.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/plugin.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/plugin.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/plugin.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/plugin.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/runner.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/runner.rb
old mode 100644
new mode 100755
similarity index 97%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/runner.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/runner.rb
index 510128318a5..5a4f244cd1c
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/runner.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/runner.rb
@@ -18,7 +18,7 @@ ARGV.clone.options do |opts|
opts.on("-h", "--help",
"Show this help message.") { $stderr.puts opts; exit }
- if RUBY_PLATFORM !~ /mswin/
+ if RUBY_PLATFORM !~ /(:?mswin|mingw)/
opts.separator ""
opts.separator "You can also use runner as a shebang line for your scripts like this:"
opts.separator "-------------------------------------------------------------"
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/server.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/server.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/server.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/server.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/update.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/update.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/commands/update.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/commands/update.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/console_app.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/console_app.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/console_app.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/console_app.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/console_sandbox.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/console_sandbox.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/console_sandbox.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/console_sandbox.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/console_with_helpers.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/console_with_helpers.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/console_with_helpers.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/console_with_helpers.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/dispatcher.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/dispatcher.rb
old mode 100644
new mode 100755
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/dispatcher.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/dispatcher.rb
index 9f8b59aa3d2..1ca635f8f9a
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/dispatcher.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/dispatcher.rb
@@ -1,5 +1,5 @@
#--
-# Copyright (c) 2004-2009 David Heinemeier Hansson
+# Copyright (c) 2004-2010 David Heinemeier Hansson
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/fcgi_handler.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/fcgi_handler.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/fcgi_handler.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/fcgi_handler.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/initializer.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/initializer.rb
old mode 100644
new mode 100755
similarity index 94%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/initializer.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/initializer.rb
index 196bd93b0c7..fc68d005e61
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/initializer.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/initializer.rb
@@ -236,9 +236,9 @@ module Rails
end
# Set the $LOAD_PATH based on the value of
- # Configuration#load_paths. Duplicates are removed.
+ # Configuration#autoload_paths. Duplicates are removed.
def set_load_path
- load_paths = configuration.load_paths + configuration.framework_paths
+ load_paths = configuration.autoload_paths + configuration.framework_paths
load_paths.reverse_each { |dir| $LOAD_PATH.unshift(dir) if File.directory?(dir) }
$LOAD_PATH.uniq!
end
@@ -246,19 +246,19 @@ module Rails
# Set the paths from which Rails will automatically load source files, and
# the load_once paths.
def set_autoload_paths
- ActiveSupport::Dependencies.load_paths = configuration.load_paths.uniq
- ActiveSupport::Dependencies.load_once_paths = configuration.load_once_paths.uniq
+ ActiveSupport::Dependencies.autoload_paths = configuration.autoload_paths.uniq
+ ActiveSupport::Dependencies.autoload_once_paths = configuration.autoload_once_paths.uniq
- extra = ActiveSupport::Dependencies.load_once_paths - ActiveSupport::Dependencies.load_paths
+ extra = ActiveSupport::Dependencies.autoload_once_paths - ActiveSupport::Dependencies.autoload_paths
unless extra.empty?
abort <<-end_error
- load_once_paths must be a subset of the load_paths.
- Extra items in load_once_paths: #{extra * ','}
+ autoload_once_paths must be a subset of the autoload_paths.
+ Extra items in autoload_once_paths: #{extra * ','}
end_error
end
# Freeze the arrays so future modifications will fail rather than do nothing mysteriously
- configuration.load_once_paths.freeze
+ configuration.autoload_once_paths.freeze
end
# Requires all frameworks specified by the Configuration#frameworks
@@ -406,7 +406,7 @@ Run `rake gems:install` to install the missing gems.
# Eager load application classes
def load_application_classes
- return if $rails_rake_task
+ return if $rails_rake_task && configuration.dependency_loading
if configuration.cache_classes
configuration.eager_load_paths.each do |load_path|
matcher = /\A#{Regexp.escape(load_path)}(.*)\.rb\Z/
@@ -696,15 +696,39 @@ Run `rake gems:install` to install the missing gems.
# An array of additional paths to prepend to the load path. By default,
# all +app+, +lib+, +vendor+ and mock paths are included in this list.
- attr_accessor :load_paths
+ attr_accessor :autoload_paths
+
+ # Deprecated, use autoload_paths.
+ def load_paths
+ $stderr.puts("config.load_paths is deprecated and removed in Rails 3, please use autoload_paths instead")
+ autoload_paths
+ end
+
+ # Deprecated, use autoload_paths=.
+ def load_paths=(paths)
+ $stderr.puts("config.load_paths= is deprecated and removed in Rails 3, please use autoload_paths= instead")
+ self.autoload_paths = paths
+ end
# An array of paths from which Rails will automatically load from only once.
- # All elements of this array must also be in +load_paths+.
- attr_accessor :load_once_paths
+ # All elements of this array must also be in +autoload_paths+.
+ attr_accessor :autoload_once_paths
+
+ # Deprecated, use autoload_once_paths.
+ def load_once_paths
+ $stderr.puts("config.load_once_paths is deprecated and removed in Rails 3, please use autoload_once_paths instead")
+ autoload_once_paths
+ end
+
+ # Deprecated, use autoload_once_paths=.
+ def load_once_paths=(paths)
+ $stderr.puts("config.load_once_paths= is deprecated and removed in Rails 3, please use autoload_once_paths= instead")
+ self.autoload_once_paths = paths
+ end
# An array of paths from which Rails will eager load on boot if cache
# classes is enabled. All elements of this array must also be in
- # +load_paths+.
+ # +autoload_paths+.
attr_accessor :eager_load_paths
# The log level to use for the default Rails logger. In production mode,
@@ -764,12 +788,12 @@ Run `rake gems:install` to install the missing gems.
# If reload_plugins? is false, add this to your plugin's init.rb
# to make it reloadable:
#
- # ActiveSupport::Dependencies.load_once_paths.delete lib_path
+ # ActiveSupport::Dependencies.autoload_once_paths.delete lib_path
#
# If reload_plugins? is true, add this to your plugin's init.rb
# to only load it once:
#
- # ActiveSupport::Dependencies.load_once_paths << lib_path
+ # ActiveSupport::Dependencies.autoload_once_paths << lib_path
#
attr_accessor :reload_plugins
@@ -836,8 +860,8 @@ Run `rake gems:install` to install the missing gems.
set_root_path!
self.frameworks = default_frameworks
- self.load_paths = default_load_paths
- self.load_once_paths = default_load_once_paths
+ self.autoload_paths = default_autoload_paths
+ self.autoload_once_paths = default_autoload_once_paths
self.eager_load_paths = default_eager_load_paths
self.log_path = default_log_path
self.log_level = default_log_level
@@ -967,7 +991,7 @@ Run `rake gems:install` to install the missing gems.
[ :active_record, :action_controller, :action_view, :action_mailer, :active_resource ]
end
- def default_load_paths
+ def default_autoload_paths
paths = []
# Add the old mock paths only if the directories exists
@@ -991,8 +1015,8 @@ Run `rake gems:install` to install the missing gems.
paths.concat builtin_directories
end
- # Doesn't matter since plugins aren't in load_paths yet.
- def default_load_once_paths
+ # Doesn't matter since plugins aren't in autoload_paths yet.
+ def default_autoload_once_paths
[]
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/performance_test_help.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/performance_test_help.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/performance_test_help.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/performance_test_help.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/backtrace_cleaner.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/backtrace_cleaner.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/backtrace_cleaner.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/backtrace_cleaner.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/gem_builder.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/gem_builder.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/gem_builder.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/gem_builder.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/gem_dependency.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/gem_dependency.rb
old mode 100644
new mode 100755
similarity index 91%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/gem_dependency.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/gem_dependency.rb
index 06d830ba24a..1ff608a8c0c
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/gem_dependency.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/gem_dependency.rb
@@ -31,12 +31,14 @@ module Rails
def self.from_directory_name(directory_name, load_spec=true)
directory_name_parts = File.basename(directory_name).split('-')
- name = directory_name_parts[0..-2].join('-')
- version = directory_name_parts.last
+
+ version = directory_name_parts.find { |s| s.match(/^\d(\.\d|\.\w+)*$/) }
+ name = directory_name_parts[0..directory_name_parts.index(version)-1].join('-') if version
+
result = self.new(name, :version => version)
spec_filename = File.join(directory_name, '.specification')
if load_spec
- raise "Missing specification file in #{File.dirname(spec_filename)}. Perhaps you need to do a 'rake gems:refresh_specs'?" unless File.exists?(spec_filename)
+ raise "Missing specification file in #{File.dirname(spec_filename)}. Perhaps you need to do a 'rake gems:refresh_specs'\?" unless File.exists?(spec_filename)
spec = YAML::load_file(spec_filename)
result.specification = spec
end
@@ -70,7 +72,15 @@ module Rails
@load_paths_added = @loaded = @frozen = true
return
end
- gem self
+
+ begin
+ dep = Gem::Dependency.new(name, requirement)
+ spec = Gem.source_index.find { |_,s| s.satisfies_requirement?(dep) }.last
+ spec.activate # a way that exists
+ rescue
+ gem self.name, self.requirement # < 1.8 unhappy way
+ end
+
@spec = Gem.loaded_specs[name]
@frozen = @spec.loaded_from.include?(self.class.unpacked_path) if @spec
@load_paths_added = true
@@ -83,7 +93,7 @@ module Rails
specification.dependencies.reject do |dependency|
dependency.type == :development
end.map do |dependency|
- GemDependency.new(dependency.name, :requirement => dependency.version_requirements)
+ GemDependency.new(dependency.name, :requirement => (dependency.respond_to?(:requirement) ? dependency.requirement : dependency.version_requirements))
end
end
@@ -115,11 +125,6 @@ module Rails
@spec = s
end
- def requirement
- r = version_requirements
- (r == Gem::Requirement.default) ? nil : r
- end
-
def built?
return false unless frozen?
@@ -265,9 +270,10 @@ module Rails
end
def ==(other)
- self.name == other.name && self.requirement == other.requirement
+ Gem::Dependency === other.class &&
+ self.name == other.name && self.requirement == other.requirement
end
- alias_method :"eql?", :"=="
+ alias_method :eql?, :"=="
private
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin.rb
old mode 100644
new mode 100755
similarity index 99%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin.rb
index 1dc4d142c5f..52912577220
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin.rb
@@ -35,7 +35,7 @@ module Rails
def load_paths
report_nonexistant_or_empty_plugin! unless valid?
- returning [] do |load_paths|
+ [].tap do |load_paths|
load_paths << lib_path if has_lib_directory?
load_paths << app_paths if has_app_directory?
end.flatten
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin/loader.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin/loader.rb
old mode 100644
new mode 100755
similarity index 96%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin/loader.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin/loader.rb
index 49670b31e6b..a9754426c39
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin/loader.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin/loader.rb
@@ -48,16 +48,16 @@ module Rails
# added *after* the application's lib directory, to ensure that an application
# can always override code within a plugin.
#
- # Plugin load paths are also added to Dependencies.load_paths, and Dependencies.load_once_paths.
+ # Plugin load paths are also added to Dependencies.autoload_paths, and Dependencies.autoload_once_paths.
def add_plugin_load_paths
plugins.each do |plugin|
plugin.load_paths.each do |path|
$LOAD_PATH.insert(application_lib_index + 1, path)
- ActiveSupport::Dependencies.load_paths << path
+ ActiveSupport::Dependencies.autoload_paths << path
unless configuration.reload_plugins?
- ActiveSupport::Dependencies.load_once_paths << path
+ ActiveSupport::Dependencies.autoload_once_paths << path
end
end
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin/locator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin/locator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/plugin/locator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/plugin/locator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/debugger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/debugger.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/debugger.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/debugger.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/log_tailer.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/log_tailer.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/log_tailer.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/log_tailer.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/metal.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/metal.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/metal.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/metal.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/static.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/static.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/rack/static.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/rack/static.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/vendor_gem_source_index.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/vendor_gem_source_index.rb
old mode 100644
new mode 100755
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/vendor_gem_source_index.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/vendor_gem_source_index.rb
index 5b7721f303f..9324de98189
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/vendor_gem_source_index.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/vendor_gem_source_index.rb
@@ -31,13 +31,13 @@ module Rails
def refresh!
# reload the installed gems
- @installed_source_index.refresh!
+ # HACK: I don't think this is needed: @installed_source_index.refresh!
vendor_gems = {}
# handle vendor Rails gems - they are identified by having loaded_from set to ""
# we add them manually to the list, so that other gems can find them via dependencies
Gem.loaded_specs.each do |n, s|
- next unless s.loaded_from.empty?
+ next unless s.loaded_from.to_s.empty?
vendor_gems[s.full_name] = s
end
@@ -101,8 +101,8 @@ module Rails
end
def version_for_dir(d)
- matches = /-([^-]+)$/.match(d)
- Gem::Version.new(matches[1]) if matches
+ version = d.split('-').find { |s| s.match(/^\d(\.\d|\.\w+)*$/) }
+ Gem::Version.new(version)
end
def load_specification(gem_dir)
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/version.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/version.rb
old mode 100644
new mode 100755
similarity index 89%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/version.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/version.rb
index 98e4e03a830..b89643ff5a4
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails/version.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails/version.rb
@@ -2,7 +2,7 @@ module Rails
module VERSION #:nodoc:
MAJOR = 2
MINOR = 3
- TINY = 5
+ TINY = 14
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator.rb
old mode 100644
new mode 100755
similarity index 87%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator.rb
index 9f0ffc1562c..264c6490620
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator.rb
@@ -21,8 +21,11 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#++
-$:.unshift(File.dirname(__FILE__))
-$:.unshift(File.dirname(__FILE__) + "/../../activesupport/lib")
+railties = File.expand_path("..", __FILE__)
+$:.unshift(railties) unless $:.include?(railties)
+
+activesupport = File.expand_path("../../../activesupport/lib", __FILE__)
+$:.unshift(activesupport) unless $:.include?(activesupport)
begin
require 'active_support'
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/base.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/base.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/base.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/base.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/commands.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/commands.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/commands.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/commands.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generated_attribute.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generated_attribute.rb
old mode 100644
new mode 100755
similarity index 72%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generated_attribute.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generated_attribute.rb
index a3d4a01142d..81c3bfd2ebe
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generated_attribute.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generated_attribute.rb
@@ -12,12 +12,13 @@ module Rails
def field_type
@field_type ||= case type
- when :integer, :float, :decimal then :text_field
- when :datetime, :timestamp, :time then :datetime_select
- when :date then :date_select
- when :string then :text_field
- when :text then :text_area
- when :boolean then :check_box
+ when :integer, :float, :decimal then :text_field
+ when :time then :time_select
+ when :datetime, :timestamp then :datetime_select
+ when :date then :date_select
+ when :string then :text_field
+ when :text then :text_area
+ when :boolean then :check_box
else
:text_field
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/app_generator.rb
old mode 100644
new mode 100755
similarity index 97%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/app_generator.rb
index c8c2239f34f..0b67eef5a92
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/app_generator.rb
@@ -193,6 +193,9 @@ class AppGenerator < Rails::Generator::Base
m.template "configs/initializers/session_store.rb", "config/initializers/session_store.rb",
:assigns => { :app_name => @app_name, :app_secret => ActiveSupport::SecureRandom.hex(64) }
+
+ m.template "configs/initializers/cookie_verification_secret.rb", "config/initializers/cookie_verification_secret.rb",
+ :assigns => { :app_secret => ActiveSupport::SecureRandom.hex(64) }
end
def create_locale_file(m)
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/git.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/scm/git.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/git.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/scm/git.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/scm.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/scm/scm.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/scm.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/scm/scm.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/svn.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/scm/svn.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/svn.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/scm/svn.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/template_runner.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/applications/app/template_runner.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/controller_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/controller_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/controller.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/controller.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/functional_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/functional_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/helper.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/helper.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/helper_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/helper_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/view.html.erb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/controller/templates/view.html.erb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/helper_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/helper_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/helper_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/helper_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/templates/helper.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/templates/helper.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/templates/helper_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/helper/templates/helper_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/integration_test/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/integration_test/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/mailer_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/mailer_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/fixture.erb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/fixture.erb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/mailer.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/mailer.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/unit_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/unit_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/view.erb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/view.erb
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/view.rhtml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/mailer/templates/view.rhtml
new file mode 100755
index 00000000000..e69de29bb2d
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/metal/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/metal/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/metal/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/metal/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/metal/metal_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/metal/metal_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/metal/metal_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/metal/metal_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/metal/templates/metal.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/metal/templates/metal.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/metal/templates/metal.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/metal/templates/metal.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/migration/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/migration/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/migration/migration_generator.rb
old mode 100644
new mode 100755
similarity index 93%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/migration/migration_generator.rb
index acf41e07df5..9a40c5d3f1c
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/migration/migration_generator.rb
@@ -8,7 +8,7 @@ class MigrationGenerator < Rails::Generator::NamedBase
private
def get_local_assigns
- returning(assigns = {}) do
+ {}.tap do |assigns|
if class_name.underscore =~ /^(add|remove)_.*_(?:to|from)_(.*)/
assigns[:migration_action] = $1
assigns[:table_name] = $2.pluralize
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/migration/templates/migration.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/migration/templates/migration.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/model_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/model_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/fixtures.yml
old mode 100644
new mode 100755
similarity index 54%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/fixtures.yml
index c21035113e5..a30132bc996
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/fixtures.yml
@@ -11,9 +11,13 @@ two:
<%= attribute.name %>: <%= attribute.default %>
<% end -%>
<% else -%>
-# one:
-# column: value
+# This model initially had no columns defined. If you add columns to the
+# model remove the '{}' from the fixture names and add the columns immediately
+# below each fixture, per the syntax in the comments below
#
-# two:
-# column: value
-<% end -%>
+one: {}
+# column: value
+#
+two: {}
+# column: value
+<% end -%>
\ No newline at end of file
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/migration.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/migration.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/model.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/model.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/unit_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/model/templates/unit_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/observer_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/observer_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/templates/observer.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/templates/observer.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/templates/unit_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/observer/templates/unit_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/performance_test/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/performance_test/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/plugin_generator.rb
old mode 100644
new mode 100755
similarity index 92%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/plugin_generator.rb
index 6826998252f..34c10b510b4
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/plugin_generator.rb
@@ -13,7 +13,7 @@ class PluginGenerator < Rails::Generator::NamedBase
m.class_collisions class_name
m.directory "#{plugin_path}/lib"
- m.directory "#{plugin_path}/tasks"
+ m.directory "#{plugin_path}/lib/tasks"
m.directory "#{plugin_path}/test"
m.template 'README', "#{plugin_path}/README"
@@ -23,7 +23,7 @@ class PluginGenerator < Rails::Generator::NamedBase
m.template 'install.rb', "#{plugin_path}/install.rb"
m.template 'uninstall.rb', "#{plugin_path}/uninstall.rb"
m.template 'plugin.rb', "#{plugin_path}/lib/#{file_name}.rb"
- m.template 'tasks.rake', "#{plugin_path}/tasks/#{file_name}_tasks.rake"
+ m.template 'tasks.rake', "#{plugin_path}/lib/tasks/#{file_name}.rake"
m.template 'unit_test.rb', "#{plugin_path}/test/#{file_name}_test.rb"
m.template 'test_helper.rb', "#{plugin_path}/test/test_helper.rb"
if @with_generator
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/README
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/README
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/Rakefile
old mode 100644
new mode 100755
similarity index 89%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/Rakefile
index 85e8ff18343..c56ce94730f
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/Rakefile
@@ -1,6 +1,6 @@
require 'rake'
require 'rake/testtask'
-require 'rake/rdoctask'
+require 'rdoc/task'
desc 'Default: run unit tests.'
task :default => :test
@@ -14,7 +14,7 @@ Rake::TestTask.new(:test) do |t|
end
desc 'Generate documentation for the <%= file_name %> plugin.'
-Rake::RDocTask.new(:rdoc) do |rdoc|
+RDoc::Task.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = '<%= class_name %>'
rdoc.options << '--line-numbers' << '--inline-source'
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/init.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/init.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/install.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/install.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/plugin.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/plugin.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/tasks.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/tasks.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/test_helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/test_helper.rb
new file mode 100755
index 00000000000..51093e14eb2
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/test_helper.rb
@@ -0,0 +1,4 @@
+require 'rubygems'
+require 'test/unit'
+require 'active_support'
+require 'active_support/test_case'
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/uninstall.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/uninstall.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/unit_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/plugin/templates/unit_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/resource_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/resource_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/controller.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/controller.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/functional_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/functional_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/helper.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/helper.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/helper_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/resource/templates/helper_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/controller.rb
old mode 100644
new mode 100755
similarity index 89%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/controller.rb
index 4d190b9362d..cef254cd896
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/controller.rb
@@ -44,8 +44,7 @@ class <%= controller_class_name %>Controller < ApplicationController
respond_to do |format|
if @<%= file_name %>.save
- flash[:notice] = '<%= class_name %> was successfully created.'
- format.html { redirect_to(@<%= file_name %>) }
+ format.html { redirect_to(@<%= file_name %>, :notice => '<%= class_name %> was successfully created.') }
format.xml { render :xml => @<%= file_name %>, :status => :created, :location => @<%= file_name %> }
else
format.html { render :action => "new" }
@@ -61,8 +60,7 @@ class <%= controller_class_name %>Controller < ApplicationController
respond_to do |format|
if @<%= file_name %>.update_attributes(params[:<%= file_name %>])
- flash[:notice] = '<%= class_name %> was successfully updated.'
- format.html { redirect_to(@<%= file_name %>) }
+ format.html { redirect_to(@<%= file_name %>, :notice => '<%= class_name %> was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/helper.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/helper.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb
old mode 100644
new mode 100755
similarity index 89%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb
index ebc97f8130c..1478ff68f01
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb
@@ -9,7 +9,7 @@
-
<%%= flash[:notice] %>
+
<%%= notice %>
<%%= yield %>
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/style.css
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/style.css
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/session_migration/USAGE
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/session_migration/USAGE
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/session_migration/templates/migration.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/generators/components/session_migration/templates/migration.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/lookup.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/lookup.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/lookup.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/lookup.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/manifest.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/manifest.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/manifest.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/manifest.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/options.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/options.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/options.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/options.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts/destroy.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts/destroy.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts/generate.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts/generate.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts/generate.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts/generate.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts/update.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts/update.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/scripts/update.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/scripts/update.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/secret_key_generator.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/secret_key_generator.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/simple_logger.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/simple_logger.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/simple_logger.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/simple_logger.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/spec.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/spec.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rails_generator/spec.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rails_generator/spec.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/railties_path.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/railties_path.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/railties_path.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/railties_path.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/ruby_version_check.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/ruby_version_check.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/ruby_version_check.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/ruby_version_check.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rubyprof_ext.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rubyprof_ext.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/rubyprof_ext.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/rubyprof_ext.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/source_annotation_extractor.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/source_annotation_extractor.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/source_annotation_extractor.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/source_annotation_extractor.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/annotations.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/annotations.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/annotations.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/annotations.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/databases.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/databases.rake
old mode 100644
new mode 100755
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/databases.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/databases.rake
index 8b608396417..1cf24343a67
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/databases.rake
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/databases.rake
@@ -46,14 +46,14 @@ namespace :db do
$stderr.puts "Couldn't create database for #{config.inspect}"
end
end
- return # Skip the else clause of begin/rescue
+ return # Skip the else clause of begin/rescue
else
ActiveRecord::Base.establish_connection(config)
ActiveRecord::Base.connection
end
rescue
case config['adapter']
- when 'mysql'
+ when /^mysql/
@charset = ENV['CHARSET'] || 'utf8'
@collation = ENV['COLLATION'] || 'utf8_unicode_ci'
begin
@@ -94,11 +94,7 @@ namespace :db do
desc 'Drops the database for the current RAILS_ENV'
task :drop => :load_config do
config = ActiveRecord::Base.configurations[RAILS_ENV || 'development']
- begin
- drop_database(config)
- rescue Exception => e
- puts "Couldn't drop #{config['database']} : #{e.inspect}"
- end
+ drop_database(config)
end
def local_database?(config, &block)
@@ -163,7 +159,7 @@ namespace :db do
task :charset => :environment do
config = ActiveRecord::Base.configurations[RAILS_ENV || 'development']
case config['adapter']
- when 'mysql'
+ when /^mysql/
ActiveRecord::Base.establish_connection(config)
puts ActiveRecord::Base.connection.charset
when 'postgresql'
@@ -178,7 +174,7 @@ namespace :db do
task :collation => :environment do
config = ActiveRecord::Base.configurations[RAILS_ENV || 'development']
case config['adapter']
- when 'mysql'
+ when /^mysql/
ActiveRecord::Base.establish_connection(config)
puts ActiveRecord::Base.connection.collation
else
@@ -278,7 +274,7 @@ namespace :db do
task :dump => :environment do
abcs = ActiveRecord::Base.configurations
case abcs[RAILS_ENV]["adapter"]
- when "mysql", "oci", "oracle"
+ when /^mysql/, "oci", "oracle"
ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
File.open("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
when "postgresql"
@@ -324,7 +320,7 @@ namespace :db do
task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do
abcs = ActiveRecord::Base.configurations
case abcs["test"]["adapter"]
- when "mysql"
+ when /^mysql/
ActiveRecord::Base.establish_connection(:test)
ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0')
IO.readlines("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql").join.split("\n\n").each do |table|
@@ -358,14 +354,14 @@ namespace :db do
task :purge => :environment do
abcs = ActiveRecord::Base.configurations
case abcs["test"]["adapter"]
- when "mysql"
+ when /^mysql/
ActiveRecord::Base.establish_connection(:test)
ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"], abcs["test"])
when "postgresql"
ActiveRecord::Base.clear_active_connections!
drop_database(abcs['test'])
create_database(abcs['test'])
- when "sqlite","sqlite3"
+ when "sqlite", "sqlite3"
dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
File.delete(dbfile) if File.exist?(dbfile)
when "sqlserver"
@@ -410,15 +406,19 @@ namespace :db do
end
def drop_database(config)
- case config['adapter']
- when 'mysql'
- ActiveRecord::Base.establish_connection(config)
- ActiveRecord::Base.connection.drop_database config['database']
- when /^sqlite/
- FileUtils.rm(File.join(RAILS_ROOT, config['database']))
- when 'postgresql'
- ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
- ActiveRecord::Base.connection.drop_database config['database']
+ begin
+ case config['adapter']
+ when /^mysql/
+ ActiveRecord::Base.establish_connection(config)
+ ActiveRecord::Base.connection.drop_database config['database']
+ when /^sqlite/
+ FileUtils.rm(File.join(RAILS_ROOT, config['database']))
+ when 'postgresql'
+ ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
+ ActiveRecord::Base.connection.drop_database config['database']
+ end
+ rescue Exception => e
+ puts "Couldn't drop #{config['database']} : #{e.inspect}"
end
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/documentation.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/documentation.rake
old mode 100644
new mode 100755
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/documentation.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/documentation.rake
index 8b41478a93d..b3111a5aeb3
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/documentation.rake
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/documentation.rake
@@ -1,6 +1,8 @@
+begin
+ require 'rdoc/task'
namespace :doc do
desc "Generate documentation for the application. Set custom template with TEMPLATE=/path/to/rdoc/template.rb or title with TITLE=\"Custom Title\""
- Rake::RDocTask.new("app") { |rdoc|
+ RDoc::Task.new("app") { |rdoc|
rdoc.rdoc_dir = 'doc/app'
rdoc.template = ENV['template'] if ENV['template']
rdoc.title = ENV['title'] || "Rails Application Documentation"
@@ -12,7 +14,7 @@ namespace :doc do
}
desc "Generate documentation for the Rails framework"
- Rake::RDocTask.new("rails") { |rdoc|
+ RDoc::Task.new("rails") { |rdoc|
rdoc.rdoc_dir = 'doc/api'
rdoc.template = "#{ENV['template']}.rb" if ENV['template']
rdoc.title = "Rails Framework Documentation"
@@ -86,3 +88,6 @@ namespace :doc do
end
end
end
+rescue LoadError
+ $stderr.puts 'Please install RDoc 2.4.2+ to generate documentation.'
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/framework.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/framework.rake
old mode 100644
new mode 100755
similarity index 95%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/framework.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/framework.rake
index 191c9361ff2..76ee9affa12
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/framework.rake
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/framework.rake
@@ -24,7 +24,7 @@ namespace :rails do
begin
chdir("vendor/rails") do
rails.dependencies.select { |g| deps.include? g.name }.each do |g|
- Gem::GemRunner.new.run(["unpack", g.name, "--version", g.version_requirements.to_s])
+ Gem::GemRunner.new.run(["unpack", g.name, "--version", g.respond_to?(:requirement) ? g.requirement.to_s : g.version_requirements.to_s])
mv(Dir.glob("#{g.name}*").first, g.name)
end
@@ -64,7 +64,10 @@ namespace :rails do
rm_f goner
end
- touch "rails/REVISION_#{latest_revision}"
+ puts "Frozen to git revision #{latest_revision}"
+ File.open('rails/REVISION', 'w') do |revision|
+ revision.puts latest_revision
+ end
end
puts 'Updating current scripts, javascripts, and configuration settings'
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/gems.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/gems.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/gems.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/gems.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/log.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/log.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/log.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/log.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/middleware.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/middleware.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/middleware.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/middleware.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/misc.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/misc.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/misc.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/misc.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/rails.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/rails.rb
new file mode 100755
index 00000000000..b9bc099f94c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/rails.rb
@@ -0,0 +1,14 @@
+$VERBOSE = nil
+
+# Load Rails rakefile extensions
+Dir["#{File.dirname(__FILE__)}/*.rake"].each { |ext| load ext }
+
+# Load any custom rakefile extensions
+deprecated_paths = Dir["#{RAILS_ROOT}/vendor/plugins/*/tasks/**/*.rake"].sort
+if deprecated_paths.any?
+ plugins = deprecated_paths.map { |p| $1 if p =~ %r((vendor/plugins/[^/]+/tasks)) }.compact
+ ActiveSupport::Deprecation.warn "Rake tasks in #{plugins.to_sentence} are deprecated. Use lib/tasks instead."
+ deprecated_paths.each { |ext| load ext }
+end
+Dir["#{RAILS_ROOT}/vendor/plugins/*/lib/tasks/**/*.rake"].sort.each { |ext| load ext }
+Dir["#{RAILS_ROOT}/lib/tasks/**/*.rake"].sort.each { |ext| load ext }
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/routes.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/routes.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/routes.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/routes.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/statistics.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/statistics.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/statistics.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/statistics.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/testing.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/testing.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/testing.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/testing.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/tmp.rake b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/tmp.rake
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/tasks/tmp.rake
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/tasks/tmp.rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/test_help.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/test_help.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/test_help.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/test_help.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/webrick_server.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/webrick_server.rb
old mode 100644
new mode 100755
similarity index 100%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/railties/lib/webrick_server.rb
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/lib/webrick_server.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/tags b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/tags
new file mode 100755
index 00000000000..b79f094316b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rails-2.3.14/tags
@@ -0,0 +1,2260 @@
+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
+!_TAG_PROGRAM_NAME Exuberant Ctags //
+!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
+!_TAG_PROGRAM_VERSION 5.8 //
+%name%.rb lib/rails/generators/rails/plugin_new/templates/lib/%name%.rb 1;" F
+%name%_test.rb lib/rails/generators/rails/plugin_new/templates/test/%name%_test.rb 1;" F
++ lib/rails/initializable.rb /^ def +(other)$/;" f class:Rails.Initializable.Collection
+404.html lib/rails/generators/rails/app/templates/public/404.html 1;" F
+404.html tmp/app/public/404.html 1;" F
+404.html tmp/app_template/public/404.html 1;" F
+422.html lib/rails/generators/rails/app/templates/public/422.html 1;" F
+422.html tmp/app/public/422.html 1;" F
+422.html tmp/app_template/public/422.html 1;" F
+500.html lib/rails/generators/rails/app/templates/public/500.html 1;" F
+500.html tmp/app/public/500.html 1;" F
+500.html tmp/app_template/public/500.html 1;" F
+ActionController lib/rails/test_help.rb /^class ActionController::TestCase$/;" c
+ActionController test/rails_info_controller_test.rb /^module ActionController$/;" m
+ActionDispatch lib/rails/test_help.rb /^class ActionDispatch::IntegrationTest$/;" c
+ActionMethods lib/rails/generators/rails/app/app_generator.rb /^ module ActionMethods$/;" m class:Rails
+Actions lib/rails/generators/actions.rb /^ module Actions$/;" m class:Rails.Generators
+ActionsTest test/generators/actions_test.rb /^class ActionsTest < Rails::Generators::TestCase$/;" c
+ActiveModel lib/rails/generators/active_model.rb /^ class ActiveModel$/;" c class:Rails.Generators
+ActiveRecord test/fixtures/lib/generators/active_record/fixjour_generator.rb /^module ActiveRecord$/;" m
+ActiveRecord test/generators/named_base_test.rb /^module ActiveRecord$/;" m
+ActiveSupport lib/rails/test_help.rb /^ class ActiveSupport::TestCase$/;" c
+ActiveSupport tmp/app/test/test_helper.rb /^class ActiveSupport::TestCase$/;" c
+ActiveSupport tmp/app_template/test/test_helper.rb /^class ActiveSupport::TestCase$/;" c
+AddLastNameToUsers test/railties/shared_tests.rb /^ class AddLastNameToUsers < ActiveRecord::Migration$/;" c class:RailtiesTest.SharedTests.test_copying_migrations
+Admin test/application/routing_test.rb /^ module Admin$/;" m
+Admin test/railties/shared_tests.rb /^ class Admin::Foo::BarController < ApplicationController$/;" c class:RailtiesTest.test_namespaced_controllers_with_namespaced_routes
+Ajax.InPlaceCollectionEditor.DefaultOptions.loadingCollectionText lib/rails/generators/rails/app/templates/public/javascripts/controls.js /^Ajax.InPlaceCollectionEditor.DefaultOptions = {$/;" p
+Ajax.InPlaceCollectionEditor.DefaultOptions.loadingCollectionText tmp/app/public/javascripts/controls.js /^Ajax.InPlaceCollectionEditor.DefaultOptions = {$/;" p
+Ajax.InPlaceCollectionEditor.DefaultOptions.loadingCollectionText tmp/app_template/public/javascripts/controls.js /^Ajax.InPlaceCollectionEditor.DefaultOptions = {$/;" p
+Ajax.InPlaceEditor lib/rails/generators/rails/app/templates/public/javascripts/controls.js /^});$/;" c
+Ajax.InPlaceEditor tmp/app/public/javascripts/controls.js /^});$/;" c
+Ajax.InPlaceEditor tmp/app_template/public/javascripts/controls.js /^});$/;" c
+Ajax.InPlaceEditor.initialize lib/rails/generators/rails/app/templates/public/javascripts/controls.js /^Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {$/;" m
+Ajax.InPlaceEditor.initialize tmp/app/public/javascripts/controls.js /^Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {$/;" m
+Ajax.InPlaceEditor.initialize tmp/app_template/public/javascripts/controls.js /^Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {$/;" m
+Annotation lib/rails/source_annotation_extractor.rb /^ class Annotation < Struct.new(:line, :tag, :text)$/;" c class:SourceAnnotationExtractor
+AppBase lib/rails/generators/app_base.rb /^ class AppBase < Base$/;" c class:Rails.Generators
+AppBuilder lib/rails/generators/rails/app/app_generator.rb /^ class AppBuilder$/;" c class:Rails
+AppBuilder test/fixtures/lib/app_builders/empty_builder.rb /^class AppBuilder$/;" c
+AppBuilder test/fixtures/lib/app_builders/simple_builder.rb /^class AppBuilder$/;" c
+AppBuilder test/fixtures/lib/app_builders/tweak_builder.rb /^class AppBuilder < Rails::AppBuilder$/;" c
+AppGenerator lib/rails/generators/rails/app/app_generator.rb /^ class AppGenerator < AppBase$/;" c class:Generators
+AppGeneratorTest test/generators/app_generator_test.rb /^class AppGeneratorTest < Rails::Generators::TestCase$/;" c
+AppTemplate test/railties/engine_test.rb /^ module AppTemplate$/;" m
+AppTemplate tmp/app/config/application.rb /^module AppTemplate$/;" m
+AppTemplate tmp/app_template/config/application.rb /^module AppTemplate$/;" m
+Application lib/rails/application.rb /^ class Application < Engine$/;" c class:Rails
+Application lib/rails/application/bootstrap.rb /^ class Application$/;" c class:Rails
+Application lib/rails/application/configuration.rb /^ class Application$/;" c class:Rails
+Application lib/rails/application/finisher.rb /^ class Application$/;" c class:Rails
+Application lib/rails/application/railties.rb /^ class Application < Engine$/;" c class:Rails
+Application lib/rails/application/routes_reloader.rb /^ class Application$/;" c class:Rails
+Application lib/rails/generators/rails/app/templates/config/application.rb /^ class Application < Rails::Application$/;" c
+Application test/abstract_unit.rb /^ class Application < Rails::Application$/;" c class:TestApp
+Application test/initializable_test.rb /^ class Application$/;" c
+Application tmp/app/config/application.rb /^ class Application < Rails::Application$/;" c class:AppTemplate
+Application tmp/app_template/config/application.rb /^ class Application < Rails::Application$/;" c class:AppTemplate
+ApplicationController lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb /^class ApplicationController < ActionController::Base$/;" c
+ApplicationController test/application/initializers/frameworks_test.rb /^ class ApplicationController < ActionController::Base$/;" c
+ApplicationController tmp/app/app/controllers/application_controller.rb /^class ApplicationController < ActionController::Base$/;" c
+ApplicationController tmp/app_template/app/controllers/application_controller.rb /^class ApplicationController < ActionController::Base$/;" c
+ApplicationGeneratingController test/railties/mounted_engine_test.rb /^ class ApplicationGeneratingController < ActionController::Base$/;" c class:ApplicationTests.ApplicationRoutingTest
+ApplicationHelper lib/rails/generators/rails/app/templates/app/helpers/application_helper.rb /^module ApplicationHelper$/;" m
+ApplicationHelper test/application/initializers/frameworks_test.rb /^ module ApplicationHelper$/;" m
+ApplicationHelper tmp/app/app/helpers/application_helper.rb /^module ApplicationHelper$/;" m
+ApplicationHelper tmp/app_template/app/helpers/application_helper.rb /^module ApplicationHelper$/;" m
+ApplicationRoutingTest test/railties/mounted_engine_test.rb /^ class ApplicationRoutingTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+ApplicationTests test/application/configuration_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/generators_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/initializers/boot_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/initializers/check_ruby_version_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/initializers/frameworks_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/initializers/hooks_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/initializers/i18n_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/initializers/load_path_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/initializers/notifications_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/middleware/best_practices_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/middleware/cache_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/middleware/remote_ip_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/middleware/sendfile_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/middleware_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/paths_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/rackup_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/rake_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/routing_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/runner_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/test_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/application/url_generation_test.rb /^module ApplicationTests$/;" m
+ApplicationTests test/railties/mounted_engine_test.rb /^module ApplicationTests$/;" m
+Autocompleter.Base lib/rails/generators/rails/app/templates/public/javascripts/controls.js /^});$/;" c
+Autocompleter.Base tmp/app/public/javascripts/controls.js /^});$/;" c
+Autocompleter.Base tmp/app_template/public/javascripts/controls.js /^});$/;" c
+Autocompleter.Base.getTokenBounds lib/rails/generators/rails/app/templates/public/javascripts/controls.js /^Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {$/;" m
+Autocompleter.Base.getTokenBounds tmp/app/public/javascripts/controls.js /^Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {$/;" m
+Autocompleter.Base.getTokenBounds tmp/app_template/public/javascripts/controls.js /^Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {$/;" m
+BacktraceCleaner lib/rails/backtrace_cleaner.rb /^ class BacktraceCleaner < ActiveSupport::BacktraceCleaner$/;" c class:Rails
+BacktraceCleanerFilterTest test/backtrace_cleaner_test.rb /^ class BacktraceCleanerFilterTest < ActiveSupport::TestCase$/;" c
+BacktraceCleanerVendorGemTest test/backtrace_cleaner_test.rb /^ class BacktraceCleanerVendorGemTest < ActiveSupport::TestCase$/;" c
+BacktraceFilterForTestUnit lib/rails/backtrace_cleaner.rb /^ module BacktraceFilterForTestUnit #:nodoc:$/;" m class:Rails
+Bar test/initializable_test.rb /^ class Bar < Foo$/;" c class:InitializableTests
+Bar test/railties/railtie_test.rb /^ class Bar < Foo; end$/;" c
+BarController test/application/routing_test.rb /^ class BarController < ActionController::Base$/;" c
+BarController test/railties/shared_tests.rb /^ class BarController < ActionController::Base$/;" c class:RailtiesTest.test_routes_in_plugins_have_lower_priority_than_application_ones
+BarHelper test/application/initializers/frameworks_test.rb /^ module BarHelper$/;" m
+BarHelper test/application/routing_test.rb /^ module BarHelper$/;" m
+BarHelper test/railties/engine_test.rb /^ module BarHelper$/;" m
+Base lib/rails/generators/base.rb /^ class Base < Thor::Group$/;" c class:Rails.Generators
+Base lib/rails/generators/erb.rb /^ class Base < Rails::Generators::NamedBase #:nodoc:$/;" c class:Erb.Generators
+Base lib/rails/generators/test_unit.rb /^ class Base < Rails::Generators::NamedBase #:nodoc:$/;" c class:TestUnit.Generators
+Base test/generators/named_base_test.rb /^ class Base$/;" c class:ActiveRecord
+Base test/rails_info_controller_test.rb /^ class Base$/;" c class:ActionController
+Basic test/initializable_test.rb /^ class Basic < ActiveSupport::TestCase$/;" c
+BeforeAfter test/initializable_test.rb /^ class BeforeAfter < ActiveSupport::TestCase$/;" c
+BestPracticesTest test/application/middleware/best_practices_test.rb /^ class BestPracticesTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Blog test/railties/mounted_engine_test.rb /^ module Blog$/;" m class:ApplicationTests.ApplicationRoutingTest
+Bootstrap lib/rails/application/bootstrap.rb /^ module Bootstrap$/;" m class:Rails.Application
+BrowsingTest lib/rails/generators/rails/app/templates/test/performance/browsing_test.rb /^class BrowsingTest < ActionDispatch::PerformanceTest$/;" c
+BrowsingTest tmp/app/test/performance/browsing_test.rb /^class BrowsingTest < ActionDispatch::PerformanceTest$/;" c
+BrowsingTest tmp/app_template/test/performance/browsing_test.rb /^class BrowsingTest < ActionDispatch::PerformanceTest$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushBash.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushCss.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushJava.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js /^ function Brush()$/;" f
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js /^ };$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushPython.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushSass.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushScala.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushSql.js /^ function Brush()$/;" c
+Brush guides/assets/javascripts/syntaxhighlighter/shBrushXml.js /^ function Brush()$/;" c
+Brush.fixComments guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js /^ function fixComments(match, regexInfo)$/;" f
+Brush.getKeywordsCSS guides/assets/javascripts/syntaxhighlighter/shBrushCss.js /^ function getKeywordsCSS(str)$/;" f
+Brush.getKeywordsCSS guides/assets/javascripts/syntaxhighlighter/shBrushSass.js /^ function getKeywordsCSS(str)$/;" f
+Brush.getValuesCSS guides/assets/javascripts/syntaxhighlighter/shBrushCss.js /^ function getValuesCSS(str)$/;" f
+Brush.getValuesCSS guides/assets/javascripts/syntaxhighlighter/shBrushSass.js /^ function getValuesCSS(str)$/;" f
+Brush.process guides/assets/javascripts/syntaxhighlighter/shBrushXml.js /^ function process(match, regexInfo)$/;" f
+Bukkit test/isolation/abstract_unit.rb /^ class Bukkit$/;" c
+BukkitController test/railties/shared_tests.rb /^ class BukkitController < ActionController::Base$/;" c class:RailtiesTest.test_adds_helpers_to_controller_views
+BukkitController test/railties/shared_tests.rb /^ class BukkitController < ActionController::Base$/;" c class:RailtiesTest.test_adds_its_views_to_view_paths
+BukkitController test/railties/shared_tests.rb /^ class BukkitController < ActionController::Base$/;" c class:RailtiesTest.test_adds_its_views_to_view_paths_with_lower_proriority_than_app_ones
+BukkitHelper test/railties/shared_tests.rb /^ module BukkitHelper$/;" m class:RailtiesTest.test_adds_helpers_to_controller_views
+Bukkits test/railties/engine_test.rb /^ class Bukkits$/;" c class:RailtiesTest.EngineTest.setup
+Bukkits test/railties/engine_test.rb /^ class Bukkits$/;" c
+Bukkits test/railties/engine_test.rb /^ class Bukkits::FooController < ActionController::Base$/;" c
+Bukkits test/railties/engine_test.rb /^ class Bukkits::PostsController < ActionController::Base$/;" c
+Bukkits test/railties/engine_test.rb /^ module Bukkits$/;" m
+Bukkits test/railties/plugin_test.rb /^ class Bukkits$/;" c
+Bukkits test/railties/shared_tests.rb /^ class Bukkits$/;" c class:RailtiesTest.test_midleware_referenced_in_configuration
+CheckRubyVersionTest test/application/initializers/check_ruby_version_test.rb /^ class CheckRubyVersionTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Child test/initializable_test.rb /^ class Child < Parent$/;" c class:InitializableTests
+ClassMethods lib/rails/generators/migration.rb /^ module ClassMethods$/;" m class:Rails.Generators.Migration
+ClassMethods lib/rails/initializable.rb /^ module ClassMethods$/;" m class:Rails.Initializable
+ClassMethods lib/rails/railtie/configurable.rb /^ module ClassMethods$/;" m class:Rails.Railtie.Configurable
+CodeStatistics lib/rails/code_statistics.rb /^class CodeStatistics #:nodoc:$/;" c
+Collection lib/rails/initializable.rb /^ class Collection < Array$/;" c class:Rails.Initializable
+Commands lib/rails/commands/plugin.rb /^module Commands$/;" m
+Configurable lib/rails/railtie/configurable.rb /^ module Configurable$/;" m class:Rails.Railtie
+Configuration lib/rails/application/configuration.rb /^ class Configuration < ::Rails::Engine::Configuration$/;" c class:Rails.Application
+Configuration lib/rails/configuration.rb /^ module Configuration$/;" m class:Rails
+Configuration lib/rails/engine/configuration.rb /^ class Configuration < ::Rails::Railtie::Configuration$/;" c class:Rails.Engine
+Configuration lib/rails/railtie/configuration.rb /^ class Configuration$/;" c class:Rails.Railtie
+ConfigurationTest test/application/configuration_test.rb /^ class ConfigurationTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Console lib/rails/commands/console.rb /^ class Console$/;" c class:Rails
+ConsoleTest test/application/console_test.rb /^class ConsoleTest < Test::Unit::TestCase$/;" c
+ControllerGenerator lib/rails/generators/erb/controller/controller_generator.rb /^ class ControllerGenerator < Base$/;" c class:Erb.Generators
+ControllerGenerator lib/rails/generators/rails/controller/controller_generator.rb /^ class ControllerGenerator < NamedBase$/;" c class:Rails.Generators
+ControllerGenerator lib/rails/generators/test_unit/controller/controller_generator.rb /^ class ControllerGenerator < Base$/;" c class:TestUnit.Generators
+ControllerGeneratorTest test/generators/controller_generator_test.rb /^class ControllerGeneratorTest < Rails::Generators::TestCase$/;" c
+CreateSessions test/railties/shared_tests.rb /^ class CreateSessions < ActiveRecord::Migration$/;" c class:RailtiesTest.SharedTests.test_copying_migrations
+CreateSessions test/railties/shared_tests.rb /^ class CreateSessions < ActiveRecord::Migration$/;" c class:RailtiesTest.SharedTests.test_install_migrations_and_assets
+CreateUsers test/railties/shared_tests.rb /^ class CreateUsers < ActiveRecord::Migration$/;" c class:RailtiesTest.SharedTests.test_copying_migrations
+CreateUsers test/railties/shared_tests.rb /^ class CreateUsers < ActiveRecord::Migration$/;" c class:RailtiesTest.SharedTests.test_install_migrations_and_assets
+CreateYaffles test/railties/shared_tests.rb /^ class CreateYaffles < ActiveRecord::Migration$/;" c class:RailtiesTest.SharedTests
+CustomAppGeneratorTest test/generators/app_generator_test.rb /^class CustomAppGeneratorTest < Rails::Generators::TestCase$/;" c
+CustomPluginGeneratorTest test/generators/plugin_new_generator_test.rb /^class CustomPluginGeneratorTest < Rails::Generators::TestCase$/;" c
+DBConsole lib/rails/commands/dbconsole.rb /^ class DBConsole$/;" c class:Rails
+Debugger lib/rails/rack/debugger.rb /^ class Debugger$/;" c class:Rails.Rack
+Draggable lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^var Draggable = Class.create({$/;" v
+Draggable tmp/app/public/javascripts/dragdrop.js /^var Draggable = Class.create({$/;" v
+Draggable tmp/app_template/public/javascripts/dragdrop.js /^var Draggable = Class.create({$/;" v
+Draggables.drags lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^var Draggables = {$/;" p
+Draggables.drags tmp/app/public/javascripts/dragdrop.js /^var Draggables = {$/;" p
+Draggables.drags tmp/app_template/public/javascripts/dragdrop.js /^var Draggables = {$/;" p
+Droppables.drops lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^var Droppables = {$/;" p
+Droppables.drops tmp/app/public/javascripts/dragdrop.js /^var Droppables = {$/;" p
+Droppables.drops tmp/app_template/public/javascripts/dragdrop.js /^var Droppables = {$/;" p
+Effect.Appear lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Appear tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Appear tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.BlindDown lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.BlindDown tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.BlindDown tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.BlindUp lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.BlindUp tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.BlindUp tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.DropOut lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.DropOut tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.DropOut tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.DropOut.oldStyle.top lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.DropOut.oldStyle.top tmp/app/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.DropOut.oldStyle.top tmp/app_template/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Fade lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Fade tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Fade tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Fold lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Fold tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Fold tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Fold.oldStyle.top lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Fold.oldStyle.top tmp/app/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Fold.oldStyle.top tmp/app_template/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Grow lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Grow tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Grow tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Grow.oldStyle.top lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Grow.oldStyle.top tmp/app/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Grow.oldStyle.top tmp/app_template/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Methods.highlight lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ },$/;" m
+Effect.Methods.highlight tmp/app/public/javascripts/effects.js /^ },$/;" m
+Effect.Methods.highlight tmp/app_template/public/javascripts/effects.js /^ },$/;" m
+Effect.Methods.morph lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^Effect.Methods = {$/;" m
+Effect.Methods.morph tmp/app/public/javascripts/effects.js /^Effect.Methods = {$/;" m
+Effect.Methods.morph tmp/app_template/public/javascripts/effects.js /^Effect.Methods = {$/;" m
+Effect.Methods.visualEffect lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ },$/;" m
+Effect.Methods.visualEffect tmp/app/public/javascripts/effects.js /^ },$/;" m
+Effect.Methods.visualEffect tmp/app_template/public/javascripts/effects.js /^ },$/;" m
+Effect.MoveBy lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^});$/;" f
+Effect.MoveBy tmp/app/public/javascripts/effects.js /^});$/;" f
+Effect.MoveBy tmp/app_template/public/javascripts/effects.js /^});$/;" f
+Effect.Puff lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Puff tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Puff tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Puff.oldStyle.opacity lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Puff.oldStyle.opacity tmp/app/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Puff.oldStyle.opacity tmp/app_template/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Pulsate lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Pulsate tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Pulsate tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Queues.instances lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^Effect.Queues = {$/;" p
+Effect.Queues.instances tmp/app/public/javascripts/effects.js /^Effect.Queues = {$/;" p
+Effect.Queues.instances tmp/app_template/public/javascripts/effects.js /^Effect.Queues = {$/;" p
+Effect.ScrollTo lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^});$/;" f
+Effect.ScrollTo tmp/app/public/javascripts/effects.js /^});$/;" f
+Effect.ScrollTo tmp/app_template/public/javascripts/effects.js /^});$/;" f
+Effect.Shake lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Shake tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Shake tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Shake.oldStyle.top lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Shake.oldStyle.top tmp/app/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Shake.oldStyle.top tmp/app_template/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Shrink lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Shrink tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Shrink tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Shrink.oldStyle.top lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Shrink.oldStyle.top tmp/app/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.Shrink.oldStyle.top tmp/app_template/public/javascripts/effects.js /^ var oldStyle = {$/;" p
+Effect.SlideDown lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.SlideDown tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.SlideDown tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.SlideUp lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.SlideUp tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.SlideUp tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.Squish lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.Squish tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.Squish tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Effect.SwitchOff lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Effect.SwitchOff tmp/app/public/javascripts/effects.js /^};$/;" f
+Effect.SwitchOff tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Element.collectTextNodes lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Element.collectTextNodes tmp/app/public/javascripts/effects.js /^};$/;" f
+Element.collectTextNodes tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Element.collectTextNodesIgnoreClass lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Element.collectTextNodesIgnoreClass tmp/app/public/javascripts/effects.js /^};$/;" f
+Element.collectTextNodesIgnoreClass tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Element.findChildren lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^};$/;" f
+Element.findChildren tmp/app/public/javascripts/dragdrop.js /^};$/;" f
+Element.findChildren tmp/app_template/public/javascripts/dragdrop.js /^};$/;" f
+Element.forceRerendering lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Element.forceRerendering tmp/app/public/javascripts/effects.js /^};$/;" f
+Element.forceRerendering tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Element.getInlineOpacity lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Element.getInlineOpacity tmp/app/public/javascripts/effects.js /^};$/;" f
+Element.getInlineOpacity tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Element.getStyles lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^if (document.defaultView && document.defaultView.getComputedStyle) {$/;" f
+Element.getStyles tmp/app/public/javascripts/effects.js /^if (document.defaultView && document.defaultView.getComputedStyle) {$/;" f
+Element.getStyles tmp/app_template/public/javascripts/effects.js /^if (document.defaultView && document.defaultView.getComputedStyle) {$/;" f
+Element.isParent lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^};$/;" f
+Element.isParent tmp/app/public/javascripts/dragdrop.js /^};$/;" f
+Element.isParent tmp/app_template/public/javascripts/dragdrop.js /^};$/;" f
+Element.offsetSize lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^};$/;" f
+Element.offsetSize tmp/app/public/javascripts/dragdrop.js /^};$/;" f
+Element.offsetSize tmp/app_template/public/javascripts/dragdrop.js /^};$/;" f
+Element.setContentZoom lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^};$/;" f
+Element.setContentZoom tmp/app/public/javascripts/effects.js /^};$/;" f
+Element.setContentZoom tmp/app_template/public/javascripts/effects.js /^};$/;" f
+Engine lib/rails/engine.rb /^ class Engine < Railtie$/;" c class:Rails
+Engine lib/rails/engine/configuration.rb /^ class Engine$/;" c class:Rails
+Engine lib/rails/engine/railties.rb /^ class Engine < Railtie$/;" c class:Rails
+Engine lib/rails/generators/rails/plugin_new/templates/lib/%name%/engine.rb /^ class Engine < Rails::Engine$/;" c
+Engine test/railties/engine_test.rb /^ class Engine < ::Rails::Engine$/;" c class:RailtiesTest.EngineTest.setup.Bukkits
+Engine test/railties/engine_test.rb /^ class Engine < ::Rails::Engine$/;" c class:AppTemplate
+Engine test/railties/engine_test.rb /^ class Engine < ::Rails::Engine$/;" c class:Bukkits
+Engine test/railties/mounted_engine_test.rb /^ class Engine < ::Rails::Engine$/;" c class:ApplicationTests.ApplicationRoutingTest.Blog
+Engine test/railties/plugin_test.rb /^ class Engine < Rails::Engine$/;" c class:Bukkits
+EngineHelper test/railties/engine_test.rb /^ module EngineHelper$/;" m
+EngineTest test/railties/engine_test.rb /^ class EngineTest < Test::Unit::TestCase$/;" c class:RailtiesTest
+Erb lib/rails/generators/erb.rb /^module Erb$/;" m
+Erb lib/rails/generators/erb/controller/controller_generator.rb /^module Erb$/;" m
+Erb lib/rails/generators/erb/mailer/mailer_generator.rb /^module Erb$/;" m
+Erb lib/rails/generators/erb/scaffold/scaffold_generator.rb /^module Erb$/;" m
+Error lib/rails/generators/base.rb /^ class Error < Thor::Error$/;" c class:Rails.Generators
+Event.Handler lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ if (!submitBubbles || !changeBubbles) {$/;" c
+Event.Handler tmp/app/public/javascripts/rails.js /^ if (!submitBubbles || !changeBubbles) {$/;" c
+Event.Handler tmp/app_template/public/javascripts/rails.js /^ if (!submitBubbles || !changeBubbles) {$/;" c
+Event.Handler.initialize lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap($/;" m
+Event.Handler.initialize tmp/app/public/javascripts/rails.js /^ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap($/;" m
+Event.Handler.initialize tmp/app_template/public/javascripts/rails.js /^ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap($/;" m
+ExpiresController test/application/middleware/cache_test.rb /^ class ExpiresController < ApplicationController$/;" c class:ApplicationTests.RoutingTest.simple_controller
+Field.scrollFreeActivate lib/rails/generators/rails/app/templates/public/javascripts/controls.js /^});$/;" f
+Field.scrollFreeActivate tmp/app/public/javascripts/controls.js /^});$/;" f
+Field.scrollFreeActivate tmp/app_template/public/javascripts/controls.js /^});$/;" f
+Finisher lib/rails/application/finisher.rb /^ module Finisher$/;" m class:Rails.Application
+FixjourGenerator test/fixtures/lib/generators/active_record/fixjour_generator.rb /^ class FixjourGenerator < Base$/;" c class:ActiveRecord.Generators
+FixjourGenerator test/fixtures/lib/generators/fixjour_generator.rb /^class FixjourGenerator < Rails::Generators::NamedBase$/;" c
+Foo test/application/initializers/frameworks_test.rb /^ class Foo < ActionMailer::Base$/;" c
+Foo test/application/initializers/load_path_test.rb /^ module Foo; end$/;" m
+Foo test/application/initializers/load_path_test.rb /^ module Foo; end$/;" m class:ApplicationTests
+Foo test/initializable_test.rb /^ class Foo$/;" c class:InitializableTests
+Foo test/railties/plugin_test.rb /^ class Foo < Rails::Plugin; end$/;" c
+Foo test/railties/railtie_test.rb /^ class Foo < Rails::Railtie ; config.after_initialize { $after_initialize = true } ; end$/;" c
+Foo test/railties/railtie_test.rb /^ class Foo < Rails::Railtie ; config.to_prepare { $to_prepare = true } ; end$/;" c
+Foo test/railties/railtie_test.rb /^ class Foo < Rails::Railtie ; end$/;" c
+Foo test/railties/railtie_test.rb /^ class Foo < Rails::Railtie$/;" c
+Foo test/railties/shared_tests.rb /^ module Foo; end$/;" m class:RailtiesTest.test_autoload_any_path_under_app
+FooController test/application/initializers/frameworks_test.rb /^ class FooController < ApplicationController$/;" c
+FooController test/application/routing_test.rb /^ class FooController < ApplicationController$/;" c
+FooController test/application/routing_test.rb /^ class FooController < ApplicationController$/;" c class:Admin
+FooController test/application/routing_test.rb /^ class FooController < ApplicationController$/;" c
+FooController test/isolation/abstract_unit.rb /^ class FooController < ApplicationController$/;" c class:simple_controller
+FooController test/railties/engine_test.rb /^ class FooController < ActionController::Base$/;" c
+FooController test/railties/shared_tests.rb /^ class FooController < ActionController::Base$/;" c class:RailtiesTest.test_routes_in_plugins_have_lower_priority_than_application_ones
+FooHelper test/application/initializers/frameworks_test.rb /^ module FooHelper$/;" m
+FooTest test/application/test_test.rb /^ class FooTest < ActiveSupport::TestCase$/;" c class:ApplicationTests
+FooTest test/application/test_test.rb /^ class FooTest < ActiveSupport::TestCase$/;" c class:ApplicationTests.TestTest
+Foobar test/fixtures/lib/rails/generators/foobar/foobar_generator.rb /^module Foobar$/;" m
+FoobarGenerator test/fixtures/lib/rails/generators/foobar/foobar_generator.rb /^ class FoobarGenerator < Rails::Generators::Base$/;" c class:Foobar
+FrameworlsTest test/application/initializers/frameworks_test.rb /^ class FrameworlsTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+GemBooting test/application/initializers/boot_test.rb /^ class GemBooting < Test::Unit::TestCase$/;" c class:ApplicationTests
+GeneratedAttribute lib/rails/generators/generated_attribute.rb /^ class GeneratedAttribute$/;" c class:Rails.Generators
+GeneratedAttributeTest test/generators/generated_attribute_test.rb /^class GeneratedAttributeTest < Rails::Generators::TestCase$/;" c
+Generation test/isolation/abstract_unit.rb /^ module Generation$/;" m
+Generator guides/rails_guides/generator.rb /^ class Generator$/;" c class:RailsGuides
+GeneratorGenerator lib/rails/generators/rails/generator/generator_generator.rb /^ class GeneratorGenerator < NamedBase$/;" c class:Rails.Generators
+GeneratorGeneratorTest test/generators/generator_generator_test.rb /^class GeneratorGeneratorTest < Rails::Generators::TestCase$/;" c
+Generators lib/rails/configuration.rb /^ class Generators #:nodoc:$/;" c class:Rails.Configuration
+Generators lib/rails/generators.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/actions.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/active_model.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/app_base.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/base.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/erb.rb /^ module Generators$/;" m class:Erb
+Generators lib/rails/generators/erb/controller/controller_generator.rb /^ module Generators$/;" m class:Erb
+Generators lib/rails/generators/erb/mailer/mailer_generator.rb /^ module Generators$/;" m class:Erb
+Generators lib/rails/generators/erb/scaffold/scaffold_generator.rb /^ module Generators$/;" m class:Erb
+Generators lib/rails/generators/generated_attribute.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/migration.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/named_base.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/app/app_generator.rb /^ module Generators$/;" m
+Generators lib/rails/generators/rails/controller/controller_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/generator/generator_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/helper/helper_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/integration_test/integration_test_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/migration/migration_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/model/model_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/observer/observer_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/performance_test/performance_test_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/plugin/plugin_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ module Generators$/;" m
+Generators lib/rails/generators/rails/resource/resource_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/scaffold/scaffold_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/session_migration/session_migration_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/rails/stylesheets/stylesheets_generator.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/resource_helpers.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/test_case.rb /^ module Generators$/;" m class:Rails
+Generators lib/rails/generators/test_unit.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/controller/controller_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/helper/helper_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/integration/integration_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/mailer/mailer_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/model/model_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/observer/observer_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/performance/performance_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/plugin/plugin_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators lib/rails/generators/test_unit/scaffold/scaffold_generator.rb /^ module Generators$/;" m class:TestUnit
+Generators test/fixtures/lib/generators/active_record/fixjour_generator.rb /^ module Generators$/;" m class:ActiveRecord
+Generators test/generators/scaffold_controller_generator_test.rb /^ module Generators$/;" m class:Unknown
+GeneratorsTest test/application/generators_test.rb /^ class GeneratorsTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+GeneratorsTest test/generators_test.rb /^class GeneratorsTest < Rails::Generators::TestCase$/;" c
+GeneratorsTestHelper test/generators/generators_test_helper.rb /^module GeneratorsTestHelper$/;" m
+HelperGenerator lib/rails/generators/rails/helper/helper_generator.rb /^ class HelperGenerator < NamedBase$/;" c class:Rails.Generators
+HelperGenerator lib/rails/generators/test_unit/helper/helper_generator.rb /^ class HelperGenerator < Base$/;" c class:TestUnit.Generators
+HelperGeneratorTest test/generators/helper_generator_test.rb /^class HelperGeneratorTest < Rails::Generators::TestCase$/;" c
+Helpers guides/rails_guides/helpers.rb /^ module Helpers$/;" m class:RailsGuides
+HomeController test/railties/engine_test.rb /^ class HomeController < ActionController::Base$/;" c class:Bukkits
+I18nTest test/application/initializers/i18n_test.rb /^ class I18nTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Indexer guides/rails_guides/indexer.rb /^ class Indexer$/;" c class:RailsGuides
+Info lib/rails/commands/plugin.rb /^ class Info$/;" c class:Commands
+Info lib/rails/info.rb /^ module Info$/;" m class:Rails
+Info test/rails_info_test.rb /^ class Info; end$/;" c class:Rails
+InfoControllerTest test/rails_info_controller_test.rb /^class InfoControllerTest < ActionController::TestCase$/;" c
+InfoTest test/rails_info_test.rb /^class InfoTest < ActiveSupport::TestCase$/;" c
+Initializable lib/rails/initializable.rb /^ module Initializable$/;" m class:Rails
+InitializableTests test/initializable_test.rb /^module InitializableTests$/;" m
+Initializer lib/rails/initializable.rb /^ class Initializer$/;" c class:Rails.Initializable
+InitializersTest test/application/initializers/hooks_test.rb /^ class InitializersTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Install lib/rails/commands/plugin.rb /^ class Install$/;" c class:Commands
+Instance test/initializable_test.rb /^ class Instance$/;" c class:InitializableTests
+InstanceTest test/initializable_test.rb /^ class InstanceTest < ActiveSupport::TestCase$/;" c
+IntegrationGenerator lib/rails/generators/test_unit/integration/integration_generator.rb /^ class IntegrationGenerator < Base$/;" c class:TestUnit.Generators
+IntegrationTestGenerator lib/rails/generators/rails/integration_test/integration_test_generator.rb /^ class IntegrationTestGenerator < NamedBase$/;" c class:Rails.Generators
+IntegrationTestGeneratorTest test/generators/integration_test_generator_test.rb /^class IntegrationTestGeneratorTest < Rails::Generators::TestCase$/;" c
+Interdependent test/initializable_test.rb /^ module Interdependent$/;" m class:InitializableTests
+Levenshtein guides/rails_guides/levenshtein.rb /^ module Levenshtein$/;" m class:RailsGuides
+LoadPathTest test/application/initializers/load_path_test.rb /^ class LoadPathTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+LoadingTest test/application/loading_test.rb /^class LoadingTest < Test::Unit::TestCase$/;" c
+LogTailer lib/rails/rack/log_tailer.rb /^ class LogTailer$/;" c class:Rails.Rack
+Logger lib/rails/rack/logger.rb /^ class Logger < ActiveSupport::LogSubscriber$/;" c class:Rails.Rack
+MailerGenerator lib/rails/generators/erb/mailer/mailer_generator.rb /^ class MailerGenerator < ControllerGenerator$/;" c class:Erb.Generators
+MailerGenerator lib/rails/generators/test_unit/mailer/mailer_generator.rb /^ class MailerGenerator < Base$/;" c class:TestUnit.Generators
+MailerGeneratorTest test/generators/mailer_generator_test.rb /^class MailerGeneratorTest < Rails::Generators::TestCase$/;" c
+MiddlewareStackProxy lib/rails/configuration.rb /^ class MiddlewareStackProxy #:nodoc:$/;" c class:Rails.Configuration
+MiddlewareTest test/application/middleware_test.rb /^ class MiddlewareTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Migration lib/rails/generators/migration.rb /^ module Migration$/;" m class:Rails.Generators
+MigrationGenerator lib/rails/generators/rails/migration/migration_generator.rb /^ class MigrationGenerator < NamedBase #metagenerator$/;" c class:Rails.Generators
+MigrationGeneratorTest test/generators/migration_generator_test.rb /^class MigrationGeneratorTest < Rails::Generators::TestCase$/;" c
+ModelGenerator lib/rails/generators/rails/model/model_generator.rb /^ class ModelGenerator < NamedBase #metagenerator$/;" c class:Rails.Generators
+ModelGenerator lib/rails/generators/test_unit/model/model_generator.rb /^ class ModelGenerator < Base$/;" c class:TestUnit.Generators
+ModelGeneratorTest test/generators/model_generator_test.rb /^class ModelGeneratorTest < Rails::Generators::TestCase$/;" c
+MoreInitializers test/initializable_test.rb /^ class MoreInitializers$/;" c class:InitializableTests.OverriddenInitializer
+MyApp test/application/url_generation_test.rb /^ class MyApp < Rails::Application$/;" c class:ApplicationTests.UrlGenerationTest
+MyMailer test/railties/engine_test.rb /^ class MyMailer < ActionMailer::Base$/;" c class:Bukkits
+MyTie test/railties/railtie_test.rb /^ class MyTie < Rails::Railtie$/;" c
+NamedBase lib/rails/generators/named_base.rb /^ class NamedBase < Base$/;" c class:Rails.Generators
+NamedBaseTest test/generators/named_base_test.rb /^class NamedBaseTest < Rails::Generators::TestCase$/;" c
+NamespacedControllerGeneratorTest test/generators/namespaced_generators_test.rb /^class NamespacedControllerGeneratorTest < NamespacedGeneratorTestCase$/;" c
+NamespacedGeneratorTestCase test/generators/namespaced_generators_test.rb /^class NamespacedGeneratorTestCase < Rails::Generators::TestCase$/;" c
+NamespacedMailerGeneratorTest test/generators/namespaced_generators_test.rb /^class NamespacedMailerGeneratorTest < NamespacedGeneratorTestCase$/;" c
+NamespacedModelGeneratorTest test/generators/namespaced_generators_test.rb /^class NamespacedModelGeneratorTest < NamespacedGeneratorTestCase$/;" c
+NamespacedObserverGeneratorTest test/generators/namespaced_generators_test.rb /^class NamespacedObserverGeneratorTest < NamespacedGeneratorTestCase$/;" c
+NamespacedScaffoldGeneratorTest test/generators/namespaced_generators_test.rb /^class NamespacedScaffoldGeneratorTest < NamespacedGeneratorTestCase$/;" c
+NavigationTest lib/rails/generators/rails/plugin_new/templates/test/integration/navigation_test.rb /^class NavigationTest < ActionDispatch::IntegrationTest$/;" c
+NotificationsTest test/application/initializers/notifications_test.rb /^ class NotificationsTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+ObserverGenerator lib/rails/generators/rails/observer/observer_generator.rb /^ class ObserverGenerator < NamedBase #metagenerator$/;" c class:Rails.Generators
+ObserverGenerator lib/rails/generators/test_unit/observer/observer_generator.rb /^ class ObserverGenerator < Base$/;" c class:TestUnit.Generators
+ObserverGeneratorTest test/generators/observer_generator_test.rb /^class ObserverGeneratorTest < Rails::Generators::TestCase$/;" c
+Options lib/rails/commands/server.rb /^ class Options$/;" c class:Rails.Server
+OverriddenInitializer test/initializable_test.rb /^ class OverriddenInitializer$/;" c class:InitializableTests
+OverriddenInitializerTest test/initializable_test.rb /^ class OverriddenInitializerTest < ActiveSupport::TestCase$/;" c
+Parent test/initializable_test.rb /^ class Parent$/;" c class:InitializableTests
+Path lib/rails/paths.rb /^ class Path < Array$/;" c class:Rails.Paths
+PathParent lib/rails/paths.rb /^ module PathParent #:nodoc:$/;" m class:Rails.Paths
+Paths lib/rails/paths.rb /^ module Paths$/;" m class:Rails
+Paths test/isolation/abstract_unit.rb /^ module Paths$/;" m class:TestHelpers
+PathsTest test/application/paths_test.rb /^ class PathsTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+PathsTest test/paths_test.rb /^class PathsTest < ActiveSupport::TestCase$/;" c
+PerformanceGenerator lib/rails/generators/test_unit/performance/performance_generator.rb /^ class PerformanceGenerator < Base$/;" c class:TestUnit.Generators
+PerformanceTestGenerator lib/rails/generators/rails/performance_test/performance_test_generator.rb /^ class PerformanceTestGenerator < NamedBase$/;" c class:Rails.Generators
+PerformanceTestGeneratorTest test/generators/performance_test_generator_test.rb /^class PerformanceTestGeneratorTest < Rails::Generators::TestCase$/;" c
+Plugin lib/rails/commands/plugin.rb /^ class Plugin$/;" c class:Commands
+Plugin lib/rails/commands/plugin.rb /^class Plugin$/;" c
+Plugin lib/rails/plugin.rb /^ class Plugin < Engine$/;" c class:Rails
+PluginA test/initializable_test.rb /^ class PluginA$/;" c class:InitializableTests.Interdependent
+PluginB test/initializable_test.rb /^ class PluginB$/;" c
+PluginBuilder lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ class PluginBuilder$/;" c class:Rails
+PluginBuilder test/fixtures/lib/plugin_builders/empty_builder.rb /^class PluginBuilder$/;" c
+PluginBuilder test/fixtures/lib/plugin_builders/simple_builder.rb /^class PluginBuilder$/;" c
+PluginBuilder test/fixtures/lib/plugin_builders/spec_builder.rb /^class PluginBuilder < Rails::PluginBuilder$/;" c
+PluginBuilder test/fixtures/lib/plugin_builders/tweak_builder.rb /^class PluginBuilder < Rails::PluginBuilder$/;" c
+PluginGenerator lib/rails/generators/rails/plugin/plugin_generator.rb /^ class PluginGenerator < NamedBase$/;" c class:Rails.Generators
+PluginGenerator lib/rails/generators/test_unit/plugin/plugin_generator.rb /^ class PluginGenerator < Base$/;" c class:TestUnit.Generators
+PluginGeneratorTest test/generators/plugin_generator_test.rb /^class PluginGeneratorTest < Rails::Generators::TestCase$/;" c
+PluginNewGenerator lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ class PluginNewGenerator < AppBase$/;" c class:Generators
+PluginNewGeneratorTest test/generators/plugin_new_generator_test.rb /^class PluginNewGeneratorTest < Rails::Generators::TestCase$/;" c
+PluginOrderingTest test/railties/plugin_ordering_test.rb /^ class PluginOrderingTest < Test::Unit::TestCase$/;" c class:RailtiesTest
+PluginTest test/railties/plugin_test.rb /^ class PluginTest < Test::Unit::TestCase$/;" c class:RailtiesTest
+Post test/application/loading_test.rb /^ class Post < ActiveRecord::Base$/;" c class:LoadingTest.test_constants_in_app_are_autoloaded
+Post test/application/loading_test.rb /^ class Post < ActiveRecord::Base$/;" c class:test_descendants_are_cleaned_on_each_request_without_cache_classes
+Post test/railties/engine_test.rb /^ class Post$/;" c class:Bukkits
+Post test/railties/mounted_engine_test.rb /^ class Post$/;" c class:ApplicationTests.ApplicationRoutingTest.Blog
+PostsController test/application/test_test.rb /^ class PostsController < ActionController::Base$/;" c
+PostsController test/railties/mounted_engine_test.rb /^ class PostsController < ActionController::Base$/;" c class:ApplicationTests.ApplicationRoutingTest.Blog
+PostsTest test/application/test_test.rb /^ class PostsTest < ActionDispatch::IntegrationTest$/;" c
+Prof lib/rails/rubyprof_ext.rb /^module Prof #:nodoc:$/;" m
+Prototype.Browser lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ Version: '1.7',$/;" p
+Prototype.Browser tmp/app/public/javascripts/prototype.js /^ Version: '1.7',$/;" p
+Prototype.Browser tmp/app_template/public/javascripts/prototype.js /^ Version: '1.7',$/;" p
+Prototype.Version lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^var Prototype = {$/;" p
+Prototype.Version tmp/app/public/javascripts/prototype.js /^var Prototype = {$/;" p
+Prototype.Version tmp/app_template/public/javascripts/prototype.js /^var Prototype = {$/;" p
+Rack lib/rails/rack.rb /^ module Rack$/;" m class:Rails
+Rack lib/rails/rack/debugger.rb /^ module Rack$/;" m class:Rails
+Rack lib/rails/rack/log_tailer.rb /^ module Rack$/;" m class:Rails
+Rack lib/rails/rack/logger.rb /^ module Rack$/;" m class:Rails
+Rack test/isolation/abstract_unit.rb /^ module Rack$/;" m class:TestHelpers
+RackupTest test/application/rackup_test.rb /^ class RackupTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Rails lib/rails.rb /^module Rails$/;" m
+Rails lib/rails/application.rb /^module Rails$/;" m
+Rails lib/rails/application/bootstrap.rb /^module Rails$/;" m
+Rails lib/rails/application/configuration.rb /^module Rails$/;" m
+Rails lib/rails/application/finisher.rb /^module Rails$/;" m
+Rails lib/rails/application/railties.rb /^module Rails$/;" m
+Rails lib/rails/application/routes_reloader.rb /^module Rails$/;" m
+Rails lib/rails/backtrace_cleaner.rb /^module Rails$/;" m
+Rails lib/rails/commands/console.rb /^module Rails$/;" m
+Rails lib/rails/commands/dbconsole.rb /^module Rails$/;" m
+Rails lib/rails/commands/server.rb /^module Rails$/;" m
+Rails lib/rails/configuration.rb /^module Rails$/;" m
+Rails lib/rails/engine.rb /^module Rails$/;" m
+Rails lib/rails/engine/configuration.rb /^module Rails$/;" m
+Rails lib/rails/engine/railties.rb /^module Rails$/;" m
+Rails lib/rails/generators.rb /^module Rails$/;" m
+Rails lib/rails/generators/actions.rb /^module Rails$/;" m
+Rails lib/rails/generators/active_model.rb /^module Rails$/;" m
+Rails lib/rails/generators/app_base.rb /^module Rails$/;" m
+Rails lib/rails/generators/base.rb /^module Rails$/;" m
+Rails lib/rails/generators/generated_attribute.rb /^module Rails$/;" m
+Rails lib/rails/generators/migration.rb /^module Rails$/;" m
+Rails lib/rails/generators/named_base.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/app/app_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/controller/controller_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/generator/generator_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/helper/helper_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/integration_test/integration_test_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/migration/migration_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/model/model_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/observer/observer_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/performance_test/performance_test_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/plugin/plugin_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/resource/resource_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/scaffold/scaffold_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/session_migration/session_migration_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/rails/stylesheets/stylesheets_generator.rb /^module Rails$/;" m
+Rails lib/rails/generators/resource_helpers.rb /^module Rails$/;" m
+Rails lib/rails/generators/test_case.rb /^module Rails$/;" m
+Rails lib/rails/info.rb /^module Rails$/;" m
+Rails lib/rails/info_controller.rb /^class Rails::InfoController < ActionController::Base$/;" c
+Rails lib/rails/initializable.rb /^module Rails$/;" m
+Rails lib/rails/paths.rb /^module Rails$/;" m
+Rails lib/rails/plugin.rb /^module Rails$/;" m
+Rails lib/rails/rack.rb /^module Rails$/;" m
+Rails lib/rails/rack/debugger.rb /^module Rails$/;" m
+Rails lib/rails/rack/log_tailer.rb /^module Rails$/;" m
+Rails lib/rails/rack/logger.rb /^module Rails$/;" m
+Rails lib/rails/rack/static.rb /^module Rails::Rack$/;" m
+Rails lib/rails/railtie.rb /^module Rails$/;" m
+Rails lib/rails/railtie/configurable.rb /^module Rails$/;" m
+Rails lib/rails/railtie/configuration.rb /^module Rails$/;" m
+Rails lib/rails/script_rails_loader.rb /^module Rails$/;" m
+Rails lib/rails/test_unit/railtie.rb /^module Rails$/;" m
+Rails lib/rails/version.rb /^module Rails$/;" m
+Rails test/generators/generators_test_helper.rb /^module Rails$/;" m
+Rails test/rails_info_test.rb /^ module Rails$/;" m
+Rails test/railties/railtie_test.rb /^ class Rails::Railtie$/;" c
+RailsEnvironment lib/rails/commands/plugin.rb /^class RailsEnvironment$/;" c
+RailsGuides guides/rails_guides/generator.rb /^module RailsGuides$/;" m
+RailsGuides guides/rails_guides/helpers.rb /^module RailsGuides$/;" m
+RailsGuides guides/rails_guides/indexer.rb /^module RailsGuides$/;" m
+RailsGuides guides/rails_guides/levenshtein.rb /^module RailsGuides$/;" m
+RailsGuides guides/rails_guides/textile_extensions.rb /^module RailsGuides$/;" m
+RailsGuides guides/w3c_validator.rb /^module RailsGuides$/;" m
+Railtie lib/rails/railtie.rb /^ class Railtie$/;" c class:Rails
+Railtie lib/rails/railtie/configurable.rb /^ class Railtie$/;" c class:Rails
+Railtie lib/rails/railtie/configuration.rb /^ class Railtie$/;" c class:Rails
+RailtieTest test/railties/railtie_test.rb /^ class RailtieTest < Test::Unit::TestCase$/;" c class:RailtiesTest
+Railties lib/rails/application/railties.rb /^ class Railties < Rails::Engine::Railties$/;" c class:Rails.Application
+Railties lib/rails/engine/railties.rb /^ class Railties$/;" c class:Rails.Engine
+RailtiesTest test/railties/engine_test.rb /^module RailtiesTest$/;" m
+RailtiesTest test/railties/plugin_ordering_test.rb /^module RailtiesTest$/;" m
+RailtiesTest test/railties/plugin_test.rb /^module RailtiesTest$/;" m
+RailtiesTest test/railties/railtie_test.rb /^module RailtiesTest$/;" m
+RailtiesTest test/railties/shared_tests.rb /^module RailtiesTest$/;" m
+RakeTest test/application/rake_test.rb /^ class RakeTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+RecursiveHTTPFetcher lib/rails/commands/plugin.rb /^class RecursiveHTTPFetcher$/;" c
+RemoteIpTest test/application/middleware/remote_ip_test.rb /^ class RemoteIpTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Remove lib/rails/commands/plugin.rb /^ class Remove$/;" c class:Commands
+ResourceGenerator lib/rails/generators/rails/resource/resource_generator.rb /^ class ResourceGenerator < ModelGenerator #metagenerator$/;" c class:Rails.Generators
+ResourceGeneratorTest test/generators/resource_generator_test.rb /^class ResourceGeneratorTest < Rails::Generators::TestCase$/;" c
+ResourceHelpers lib/rails/generators/resource_helpers.rb /^ module ResourceHelpers$/;" m class:Rails.Generators
+Root lib/rails/paths.rb /^ class Root < ::Hash$/;" c class:Rails.Paths
+RoutesReloader lib/rails/application/routes_reloader.rb /^ class RoutesReloader < ::ActiveSupport::FileUpdateChecker$/;" c class:Rails.Application
+RoutingTest test/application/middleware/cache_test.rb /^ class RoutingTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+RoutingTest test/application/routing_test.rb /^ class RoutingTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+RunnerTest test/application/runner_test.rb /^ class RunnerTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+ScaffoldControllerGenerator lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb /^ class ScaffoldControllerGenerator < NamedBase$/;" c class:Rails.Generators
+ScaffoldControllerGeneratorTest test/generators/scaffold_controller_generator_test.rb /^class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase$/;" c
+ScaffoldGenerator lib/rails/generators/erb/scaffold/scaffold_generator.rb /^ class ScaffoldGenerator < Base$/;" c class:Erb.Generators
+ScaffoldGenerator lib/rails/generators/rails/scaffold/scaffold_generator.rb /^ class ScaffoldGenerator < ResourceGenerator #metagenerator$/;" c class:Rails.Generators
+ScaffoldGenerator lib/rails/generators/test_unit/scaffold/scaffold_generator.rb /^ class ScaffoldGenerator < Base$/;" c class:TestUnit.Generators
+ScaffoldGeneratorTest test/generators/scaffold_generator_test.rb /^class ScaffoldGeneratorTest < Rails::Generators::TestCase$/;" c
+ScriptRailsLoader lib/rails/script_rails_loader.rb /^ module ScriptRailsLoader$/;" m class:Rails
+ScriptRailsLoaderTest test/script_rails_loader_test.rb /^class ScriptRailsLoaderTest < ActiveSupport::TestCase$/;" c
+SendfileTest test/application/middleware/sendfile_test.rb /^ class SendfileTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+Server lib/rails/commands/server.rb /^ class Server < ::Rack::Server$/;" c class:Rails
+SessionMigrationGenerator lib/rails/generators/rails/session_migration/session_migration_generator.rb /^ class SessionMigrationGenerator < NamedBase #metagenerator$/;" c class:Rails.Generators
+SessionMigrationGeneratorTest test/generators/session_migration_generator_test.rb /^class SessionMigrationGeneratorTest < Rails::Generators::TestCase$/;" c
+SharedCustomGeneratorTests test/generators/shared_generator_tests.rb /^module SharedCustomGeneratorTests$/;" m
+SharedGeneratorTests test/generators/shared_generator_tests.rb /^module SharedGeneratorTests$/;" m
+SharedTests test/railties/shared_tests.rb /^ module SharedTests$/;" m class:RailtiesTest
+SomeHelper test/railties/engine_test.rb /^ module SomeHelper$/;" m
+Sortable.SERIALIZE_RULE lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^var Sortable = {$/;" p
+Sortable.SERIALIZE_RULE tmp/app/public/javascripts/dragdrop.js /^var Sortable = {$/;" p
+Sortable.SERIALIZE_RULE tmp/app_template/public/javascripts/dragdrop.js /^var Sortable = {$/;" p
+SortableObserver lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^var SortableObserver = Class.create({$/;" v
+SortableObserver tmp/app/public/javascripts/dragdrop.js /^var SortableObserver = Class.create({$/;" v
+SortableObserver tmp/app_template/public/javascripts/dragdrop.js /^var SortableObserver = Class.create({$/;" v
+SourceAnnotationExtractor lib/rails/source_annotation_extractor.rb /^class SourceAnnotationExtractor$/;" c
+Sprokkit test/railties/shared_tests.rb /^ class Sprokkit$/;" c class:RailtiesTest.test_routes_are_added_to_router
+Str lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function Str(key, holder, stack) {$/;" f
+Str tmp/app/public/javascripts/prototype.js /^ function Str(key, holder, stack) {$/;" f
+Str tmp/app_template/public/javascripts/prototype.js /^ function Str(key, holder, stack) {$/;" f
+String lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^\/\/ script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009$/;" c
+String tmp/app/public/javascripts/effects.js /^\/\/ script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009$/;" c
+String tmp/app_template/public/javascripts/effects.js /^\/\/ script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009$/;" c
+String.parseColor lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^String.prototype.parseColor = function() {$/;" m
+String.parseColor tmp/app/public/javascripts/effects.js /^String.prototype.parseColor = function() {$/;" m
+String.parseColor tmp/app_template/public/javascripts/effects.js /^String.prototype.parseColor = function() {$/;" m
+String.parseStyle lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^String.prototype.parseStyle = function(){$/;" m
+String.parseStyle tmp/app/public/javascripts/effects.js /^String.prototype.parseStyle = function(){$/;" m
+String.parseStyle tmp/app_template/public/javascripts/effects.js /^String.prototype.parseStyle = function(){$/;" m
+StylesheetsGenerator lib/rails/generators/rails/stylesheets/stylesheets_generator.rb /^ class StylesheetsGenerator < Base$/;" c class:Rails.Generators
+StylesheetsGeneratorTest test/generators/stylesheets_generator_test.rb /^class StylesheetsGeneratorTest < Rails::Generators::TestCase$/;" c
+Test test/isolation/abstract_unit.rb /^class Test::Unit::TestCase$/;" c
+TestApp test/abstract_unit.rb /^module TestApp$/;" m
+TestCase lib/rails/generators/test_case.rb /^ class TestCase < ActiveSupport::TestCase$/;" c class:Rails.Generators
+TestHelpers test/isolation/abstract_unit.rb /^module TestHelpers$/;" m
+TestTest test/application/test_test.rb /^ class TestTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+TestUnit lib/rails/generators/test_unit.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/controller/controller_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/helper/helper_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/integration/integration_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/mailer/mailer_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/model/model_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/observer/observer_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/performance/performance_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/plugin/plugin_generator.rb /^module TestUnit$/;" m
+TestUnit lib/rails/generators/test_unit/scaffold/scaffold_generator.rb /^module TestUnit$/;" m
+TestUnitRailtie lib/rails/test_unit/railtie.rb /^ class TestUnitRailtie < Rails::Railtie$/;" c class:Rails
+TestWithBacktrace test/backtrace_cleaner_test.rb /^ class TestWithBacktrace$/;" c
+TextileExtensions guides/rails_guides/textile_extensions.rb /^ module TextileExtensions$/;" m class:RailsGuides
+Try.these lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^var Try = {$/;" m
+Try.these tmp/app/public/javascripts/prototype.js /^var Try = {$/;" m
+Try.these tmp/app_template/public/javascripts/prototype.js /^var Try = {$/;" m
+Type lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function Type(o) {$/;" f
+Type tmp/app/public/javascripts/prototype.js /^ function Type(o) {$/;" f
+Type tmp/app_template/public/javascripts/prototype.js /^ function Type(o) {$/;" f
+Unknown test/generators/scaffold_controller_generator_test.rb /^module Unknown$/;" m
+Upcaser test/railties/engine_test.rb /^ class Upcaser$/;" c
+UrlGenerationTest test/application/url_generation_test.rb /^ class UrlGenerationTest < Test::Unit::TestCase$/;" c class:ApplicationTests
+User test/application/console_test.rb /^ class User < ActiveRecord::Base$/;" c class:ConsoleTest.test_active_record_does_not_panic_when_referencing_an_observed_constant
+User test/application/console_test.rb /^ class User$/;" c class:ConsoleTest.test_reload_should_reload_constants
+User test/application/loading_test.rb /^ class User < ActiveRecord::Base$/;" c class:LoadingTest.test_models_without_table_do_not_panic_on_scope_definitions_when_loaded
+User test/application/runner_test.rb /^ class User$/;" c class:ApplicationTests.RunnerTest.setup
+UserObserver test/application/console_test.rb /^ class UserObserver < ActiveRecord::Observer$/;" c class:ConsoleTest.test_active_record_does_not_panic_when_referencing_an_observed_constant
+VERSION lib/rails/version.rb /^ module VERSION #:nodoc:$/;" m class:Rails
+Validator guides/w3c_validator.rb /^ class Validator$/;" c class:RailsGuides
+WithArgs test/initializable_test.rb /^ class WithArgs$/;" c class:InitializableTests
+WithArgsTest test/initializable_test.rb /^ class WithArgsTest < ActiveSupport::TestCase$/;" c
+WithOptionsGenerator test/generators_test.rb /^ class WithOptionsGenerator < Rails::Generators::Base$/;" c class:GeneratorsTest.test_developer_options_are_overwriten_by_user_options
+Word test/initializable_test.rb /^ module Word$/;" m class:InitializableTests
+WrongGenerator test/fixtures/lib/generators/wrong_generator.rb /^class WrongGenerator < Rails::Generator::NamedBase$/;" c
+YazilarController test/application/routing_test.rb /^ class YazilarController < ApplicationController$/;" c
+Zoo test/application/initializers/load_path_test.rb /^ class Zoo ; include ReptileHouse ; end$/;" c
+Zoo test/application/initializers/load_path_test.rb /^ module Zoo::ReptileHouse ; end$/;" m
+[]= lib/rails/paths.rb /^ def []=(path, value)$/;" f class:Rails.Paths.Root
+_all_autoload_once_paths lib/rails/engine.rb /^ def _all_autoload_once_paths$/;" f
+_all_autoload_paths lib/rails/engine.rb /^ def _all_autoload_paths$/;" f
+_all_load_paths lib/rails/engine.rb /^ def _all_load_paths$/;" f
+about lib/rails/generators/rails/app/templates/public/index.html /^ function about() {$/;" f
+about tmp/app/public/index.html /^ function about() {$/;" f
+about tmp/app_template/public/index.html /^ function about() {$/;" f
+abstract_railtie? lib/rails/railtie.rb /^ def abstract_railtie?$/;" f class:Rails.Railtie
+abstract_unit.rb test/abstract_unit.rb 1;" F
+abstract_unit.rb test/isolation/abstract_unit.rb 1;" F
+action test/generators/actions_test.rb /^ def action(*args, &block)$/;" f class:ActionsTest
+action test/generators/app_generator_test.rb /^ def action(*args, &block)$/;" f
+action test/generators/app_generator_test.rb /^ def action(*args, &block)$/;" f class:CustomAppGeneratorTest
+action test/generators/plugin_new_generator_test.rb /^ def action(*args, &block)$/;" f class:CustomPluginGeneratorTest
+action test/generators/plugin_new_generator_test.rb /^ def action(*args, &block)$/;" f class:PluginNewGeneratorTest
+actions.rb lib/rails/generators/actions.rb 1;" F
+actions_test.rb test/generators/actions_test.rb 1;" F
+active_model.rb lib/rails/generators/active_model.rb 1;" F
+add lib/rails/paths.rb /^ def add(path, options={})$/;" f class:Rails.Paths.Root
+add_gem_filters lib/rails/backtrace_cleaner.rb /^ def add_gem_filters$/;" f class:Rails.BacktraceCleaner
+add_lib_to_load_path! lib/rails/application.rb /^ def add_lib_to_load_path! #:nodoc:$/;" f class:Rails
+add_resource_route lib/rails/generators/rails/resource/resource_generator.rb /^ def add_resource_route$/;" f class:Rails.Generators.ResourceGenerator
+add_routes lib/rails/generators/rails/controller/controller_generator.rb /^ def add_routes$/;" f class:Rails.Generators.ControllerGenerator
+add_shared_options_for lib/rails/generators/app_base.rb /^ def self.add_shared_options_for(name)$/;" F class:Rails.Generators.AppBase
+add_shebang_option lib/rails/generators/base.rb /^ def self.add_shebang_option!$/;" F class:Rails
+add_source lib/rails/generators/actions.rb /^ def add_source(source, options={})$/;" f class:Rails.Generators.Actions
+add_to_config test/isolation/abstract_unit.rb /^ def add_to_config(str)$/;" f
+after lib/rails/initializable.rb /^ def after$/;" f class:Rails.Initializable.Initializer
+after_dispatch lib/rails/rack/logger.rb /^ def after_dispatch(env)$/;" f class:Rails.Rack.Logger
+after_initialize lib/rails/railtie/configuration.rb /^ def after_initialize(&block)$/;" f class:Rails.Railtie.Configuration
+aliases lib/rails/generators.rb /^ def self.aliases #:nodoc:$/;" F class:Rails.Generators
+all lib/rails/application/railties.rb /^ def all(&block)$/;" f class:Rails.Application.Railties
+all lib/rails/engine/railties.rb /^ def all(&block)$/;" f class:Rails.Engine.Railties
+all lib/rails/generators/active_model.rb /^ def self.all(klass)$/;" F class:Rails.Generators.ActiveModel
+all lib/rails/plugin.rb /^ def self.all(list, paths)$/;" F class:Rails.Plugin
+all test/generators/scaffold_controller_generator_test.rb /^ def self.all(klass)$/;" F class:test_customized_orm_is_used
+all.rb lib/rails/all.rb 1;" F
+all_paths lib/rails/paths.rb /^ def all_paths$/;" f class:Rails.Paths.Root
+allowAction lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function allowAction(element) {$/;" f
+allowAction tmp/app/public/javascripts/rails.js /^ function allowAction(element) {$/;" f
+allowAction tmp/app_template/public/javascripts/rails.js /^ function allowAction(element) {$/;" f
+app lib/rails/console/app.rb /^def app(create=false)$/;" f
+app lib/rails/engine.rb /^ def app$/;" f
+app lib/rails/generators/rails/app/app_generator.rb /^ def app$/;" f class:Rails.AppBuilder
+app lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def app$/;" f class:Rails.PluginBuilder
+app test/application/configuration_test.rb /^ def app$/;" f class:ApplicationTests.ConfigurationTest
+app test/application/initializers/i18n_test.rb /^ def app$/;" f class:ApplicationTests.I18nTest
+app test/application/loading_test.rb /^ def app$/;" f class:LoadingTest
+app test/application/middleware/remote_ip_test.rb /^ def app$/;" f class:ApplicationTests.RemoteIpTest
+app test/application/middleware/sendfile_test.rb /^ def app$/;" f class:ApplicationTests.SendfileTest
+app test/application/middleware_test.rb /^ def app$/;" f class:ApplicationTests.MiddlewareTest
+app test/application/url_generation_test.rb /^ def app$/;" f class:ApplicationTests.UrlGenerationTest
+app test/isolation/abstract_unit.rb /^ def app(env = "production")$/;" f class:TestHelpers.Rack
+app test/railties/engine_test.rb /^ def app$/;" f
+app test/railties/mounted_engine_test.rb /^ def app$/;" f class:ApplicationTests
+app test/railties/railtie_test.rb /^ def app$/;" f class:RailtiesTest.RailtieTest
+app test/railties/shared_tests.rb /^ def app$/;" f class:RailtiesTest.SharedTests
+app.rb lib/rails/console/app.rb 1;" F
+app_base.rb lib/rails/generators/app_base.rb 1;" F
+app_const lib/rails/generators/rails/app/app_generator.rb /^ def app_const$/;" f class:Generators.AppGenerator
+app_const test/application/generators_test.rb /^ def app_const$/;" f class:ApplicationTests.GeneratorsTest
+app_const_base lib/rails/generators/rails/app/app_generator.rb /^ def app_const_base$/;" f class:Generators.AppGenerator
+app_file test/isolation/abstract_unit.rb /^ def app_file(path, contents)$/;" f
+app_generator.rb lib/rails/generators/rails/app/app_generator.rb 1;" F
+app_generator_test.rb test/generators/app_generator_test.rb 1;" F
+app_generators lib/rails/railtie/configuration.rb /^ def app_generators$/;" f class:Rails.Railtie.Configuration
+app_middleware lib/rails/railtie/configuration.rb /^ def app_middleware$/;" f class:Rails.Railtie.Configuration
+app_name lib/rails/generators/rails/app/app_generator.rb /^ def app_name$/;" f class:Generators.AppGenerator
+app_path test/isolation/abstract_unit.rb /^ def app_path(*args)$/;" f class:TestHelpers.Paths
+app_secret lib/rails/generators/rails/app/app_generator.rb /^ def app_secret$/;" f class:Generators.AppGenerator
+app_templates_dir lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def app_templates_dir$/;" f class:Generators.PluginNewGenerator
+application lib/rails.rb /^ def application$/;" f class:Rails
+application.js lib/rails/generators/rails/app/templates/public/javascripts/application.js 1;" F
+application.js tmp/app/public/javascripts/application.js 1;" F
+application.js tmp/app_template/public/javascripts/application.js 1;" F
+application.rb lib/rails/application.rb 1;" F
+application.rb lib/rails/commands/application.rb 1;" F
+application.rb lib/rails/generators/rails/app/templates/config/application.rb 1;" F
+application.rb lib/rails/generators/rails/plugin_new/templates/rails/application.rb 1;" F
+application.rb tmp/app/config/application.rb 1;" F
+application.rb tmp/app_template/config/application.rb 1;" F
+application= lib/rails.rb /^ def application=(application)$/;" f class:Rails
+application_controller.rb lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb 1;" F
+application_controller.rb tmp/app/app/controllers/application_controller.rb 1;" F
+application_controller.rb tmp/app_template/app/controllers/application_controller.rb 1;" F
+application_definition lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def application_definition$/;" f class:Generators.PluginNewGenerator
+application_helper.rb lib/rails/generators/rails/app/templates/app/helpers/application_helper.rb 1;" F
+application_helper.rb tmp/app/app/helpers/application_helper.rb 1;" F
+application_helper.rb tmp/app_template/app/helpers/application_helper.rb 1;" F
+application_name lib/rails/generators/named_base.rb /^ def application_name$/;" f class:Rails.Generators
+application_route_in_view test/railties/mounted_engine_test.rb /^ def application_route_in_view$/;" f class:ApplicationTests.ApplicationRoutingTest.Blog.PostsController
+apply_rails_template lib/rails/generators/app_base.rb /^ def apply_rails_template$/;" f class:Rails.Generators.AppBase
+arguments lib/rails/generators/test_case.rb /^ def self.arguments(array)$/;" F class:Rails.Generators.TestCase
+assert_body test/isolation/abstract_unit.rb /^ def assert_body(expected, resp)$/;" f class:TestHelpers
+assert_class_method lib/rails/generators/test_case.rb /^ def assert_class_method(method, content, &block)$/;" f class:Rails.Generators.TestCase
+assert_fallbacks test/application/initializers/i18n_test.rb /^ def assert_fallbacks(fallbacks)$/;" f class:ApplicationTests.I18nTest
+assert_field_default_value lib/rails/generators/test_case.rb /^ def assert_field_default_value(attribute_type, value)$/;" f class:Rails.Generators.TestCase
+assert_field_type lib/rails/generators/test_case.rb /^ def assert_field_type(attribute_type, field_type)$/;" f class:Rails.Generators.TestCase
+assert_file lib/rails/generators/test_case.rb /^ def assert_file(relative, *contents)$/;" f class:Rails.Generators.TestCase
+assert_header test/isolation/abstract_unit.rb /^ def assert_header(key, value, resp)$/;" f class:TestHelpers
+assert_in_load_path test/application/paths_test.rb /^ def assert_in_load_path(*path)$/;" f class:ApplicationTests.PathsTest
+assert_instance_method lib/rails/generators/test_case.rb /^ def assert_instance_method(method, content)$/;" f class:Rails.Generators.TestCase
+assert_migration lib/rails/generators/test_case.rb /^ def assert_migration(relative, *contents, &block)$/;" f class:Rails.Generators.TestCase
+assert_missing test/isolation/abstract_unit.rb /^ def assert_missing(resp)$/;" f class:TestHelpers
+assert_name test/generators/named_base_test.rb /^ def assert_name(generator, value, method)$/;" f class:NamedBaseTest
+assert_no_fallbacks test/application/initializers/i18n_test.rb /^ def assert_no_fallbacks$/;" f class:ApplicationTests.I18nTest
+assert_no_file lib/rails/generators/test_case.rb /^ def assert_no_file(relative)$/;" f class:Rails.Generators.TestCase
+assert_no_migration lib/rails/generators/test_case.rb /^ def assert_no_migration(relative)$/;" f class:Rails.Generators.TestCase
+assert_not_in_load_path test/application/paths_test.rb /^ def assert_not_in_load_path(*path)$/;" f class:ApplicationTests.PathsTest
+assert_path test/application/paths_test.rb /^ def assert_path(paths, *dir)$/;" f class:ApplicationTests.PathsTest
+assert_property test/rails_info_test.rb /^ def assert_property(property_name, value)$/;" f
+assert_rails_boots test/application/initializers/check_ruby_version_test.rb /^ def assert_rails_boots$/;" f class:ApplicationTests
+assert_rails_does_not_boot test/application/initializers/check_ruby_version_test.rb /^ def assert_rails_does_not_boot$/;" f
+assert_success test/isolation/abstract_unit.rb /^ def assert_success(resp)$/;" f class:TestHelpers
+assert_utf8 test/application/configuration_test.rb /^ def assert_utf8$/;" f
+assert_welcome test/isolation/abstract_unit.rb /^ def assert_welcome(resp)$/;" f class:TestHelpers
+assign_names! lib/rails/generators/named_base.rb /^ def assign_names!(name) #:nodoc:$/;" f class:Rails.Generators
+author guides/rails_guides/helpers.rb /^ def author(name, nick, image = 'credits_pic_blank.gif', &block)$/;" f class:RailsGuides.Helpers
+autoload_once lib/rails/paths.rb /^ def autoload_once$/;" f class:Rails.Paths.Root
+autoload_once_paths lib/rails/engine/configuration.rb /^ def autoload_once_paths$/;" f class:Rails.Engine.Configuration
+autoload_paths lib/rails/engine/configuration.rb /^ def autoload_paths$/;" f class:Rails.Engine.Configuration
+autoload_paths lib/rails/paths.rb /^ def autoload_paths$/;" f class:Rails.Paths.Root
+available_views lib/rails/generators/erb/scaffold/scaffold_generator.rb /^ def available_views$/;" f class:Erb.Generators.ScaffoldGenerator
+backtrace_cleaner lib/rails.rb /^ def backtrace_cleaner$/;" f class:Rails
+backtrace_cleaner.rb lib/rails/backtrace_cleaner.rb 1;" F
+backtrace_cleaner_test.rb test/backtrace_cleaner_test.rb 1;" F
+backtrace_silencers.rb lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb 1;" F
+backtrace_silencers.rb tmp/app_template/config/initializers/backtrace_silencers.rb 1;" F
+banner lib/rails/generators/base.rb /^ def self.banner$/;" F class:Rails
+banner lib/rails/generators/rails/app/app_generator.rb /^ def self.banner$/;" F class:Generators.AppGenerator
+banner lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def self.banner$/;" F class:Generators.PluginNewGenerator
+bar test/application/routing_test.rb /^ def bar$/;" f class:FooController
+bar test/railties/engine_test.rb /^ def bar$/;" f class:BarHelper
+bar test/railties/engine_test.rb /^ def bar$/;" f class:Bukkits
+base.rb lib/rails/generators/base.rb 1;" F
+base_name lib/rails/generators/base.rb /^ def self.base_name$/;" F class:Rails
+base_root lib/rails/generators/base.rb /^ def self.base_root$/;" F class:Rails
+baz test/application/routing_test.rb /^ def baz$/;" f class:FooController
+before lib/rails/initializable.rb /^ def before$/;" f class:Rails.Initializable.Initializer
+before_configuration lib/rails/railtie/configuration.rb /^ def before_configuration(&block)$/;" f class:Rails.Railtie.Configuration
+before_dispatch lib/rails/rack/logger.rb /^ def before_dispatch(env)$/;" f class:Rails.Rack.Logger
+before_eager_load lib/rails/railtie/configuration.rb /^ def before_eager_load(&block)$/;" f class:Rails.Railtie.Configuration
+before_initialize lib/rails/railtie/configuration.rb /^ def before_initialize(&block)$/;" f class:Rails.Railtie.Configuration
+benchmarker.rb lib/rails/commands/benchmarker.rb 1;" F
+best_install_method lib/rails/commands/plugin.rb /^ def best_install_method$/;" f class:RailsEnvironment
+best_practices_test.rb test/application/middleware/best_practices_test.rb 1;" F
+bind lib/rails/initializable.rb /^ def bind(context)$/;" f class:Rails.Initializable.Initializer
+boot! test/application/middleware_test.rb /^ def boot!$/;" f
+boot.rb lib/rails/generators/rails/app/templates/config/boot.rb 1;" F
+boot.rb lib/rails/generators/rails/plugin_new/templates/rails/boot.rb 1;" F
+boot.rb tmp/app/config/boot.rb 1;" F
+boot.rb tmp/app_template/config/boot.rb 1;" F
+boot_rails test/isolation/abstract_unit.rb /^ def boot_rails$/;" f
+boot_rails test/railties/plugin_ordering_test.rb /^ def boot_rails$/;" f class:RailtiesTest.PluginOrderingTest
+boot_rails test/railties/shared_tests.rb /^ def boot_rails$/;" f class:RailtiesTest.SharedTests
+boot_test.rb test/application/initializers/boot_test.rb 1;" F
+bootstrap.rb lib/rails/application/bootstrap.rb 1;" F
+browsing_test.rb lib/rails/generators/rails/app/templates/test/performance/browsing_test.rb 1;" F
+browsing_test.rb tmp/app/test/performance/browsing_test.rb 1;" F
+browsing_test.rb tmp/app_template/test/performance/browsing_test.rb 1;" F
+build lib/rails/generators/active_model.rb /^ def self.build(klass, params=nil)$/;" F class:Rails.Generators.ActiveModel
+build lib/rails/generators/app_base.rb /^ def build(meth, *args)$/;" f class:Rails.Generators.AppBase
+build_app test/isolation/abstract_unit.rb /^ def build_app(options = {})$/;" f class:Generation
+builder lib/rails/generators/app_base.rb /^ def builder$/;" f class:Rails.Generators.AppBase
+builder_class test/generators/app_generator_test.rb /^ def builder_class$/;" f class:CustomAppGeneratorTest
+builder_class test/generators/plugin_new_generator_test.rb /^ def builder_class$/;" f class:CustomPluginGeneratorTest
+builders_dir test/generators/app_generator_test.rb /^ def builders_dir$/;" f class:CustomAppGeneratorTest
+builders_dir test/generators/plugin_new_generator_test.rb /^ def builders_dir$/;" f class:CustomPluginGeneratorTest
+bukkits test/railties/shared_tests.rb /^ def bukkits$/;" f class:RailtiesTest.test_adds_helpers_to_controller_views.BukkitHelper
+bundle_if_dev_or_edge lib/rails/generators/app_base.rb /^ def bundle_if_dev_or_edge$/;" f class:Rails.Generators
+bundler? guides/rails_guides.rb /^def bundler?$/;" f
+cache lib/rails.rb /^ def cache$/;" f class:Rails
+cache_store lib/rails/application/configuration.rb /^ def cache_store$/;" f class:Rails.Application.Configuration
+cache_test.rb test/application/middleware/cache_test.rb 1;" F
+calculate_code lib/rails/code_statistics.rb /^ def calculate_code$/;" f class:CodeStatistics
+calculate_directory_statistics lib/rails/code_statistics.rb /^ def calculate_directory_statistics(directory, pattern = \/.*\\.rb$\/)$/;" f class:CodeStatistics
+calculate_statistics lib/rails/code_statistics.rb /^ def calculate_statistics$/;" f class:CodeStatistics
+calculate_tests lib/rails/code_statistics.rb /^ def calculate_tests$/;" f class:CodeStatistics
+calculate_total lib/rails/code_statistics.rb /^ def calculate_total$/;" f class:CodeStatistics
+call lib/rails/engine.rb /^ def call(env)$/;" f
+call lib/rails/rack/debugger.rb /^ def call(env)$/;" f class:Rails.Rack.Debugger
+call lib/rails/rack/log_tailer.rb /^ def call(env)$/;" f class:Rails.Rack.LogTailer
+call lib/rails/rack/logger.rb /^ def call(env)$/;" f class:Rails.Rack.Logger
+call test/application/middleware_test.rb /^ def call(env)$/;" f
+call test/railties/engine_test.rb /^ def call(env)$/;" f class:Upcaser
+call test/railties/shared_tests.rb /^ def call(env)$/;" f class:RailtiesTest.test_midleware_referenced_in_configuration.Bukkits
+call test/railties/shared_tests.rb /^ def self.call(env)$/;" F class:RailtiesTest.test_routes_are_added_to_router.Sprokkit
+camelized lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def camelized$/;" f class:Generators.PluginNewGenerator
+capify! lib/rails/generators/actions.rb /^ def capify!$/;" f class:Rails.Generators
+check_class_collision lib/rails/generators/named_base.rb /^ def self.check_class_collision(options={})$/;" F class:Rails.Generators
+check_fragment_identifiers guides/rails_guides/generator.rb /^ def check_fragment_identifiers(html, anchors)$/;" f
+check_ruby_version_test.rb test/application/initializers/check_ruby_version_test.rb 1;" F
+child.id lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var child = {$/;" p
+child.id tmp/app/public/javascripts/dragdrop.js /^ var child = {$/;" p
+child.id tmp/app_template/public/javascripts/dragdrop.js /^ var child = {$/;" p
+children lib/rails/paths.rb /^ def children$/;" f class:Rails.Paths.Path
+class_collisions lib/rails/generators/base.rb /^ def class_collisions(*class_names) #:nodoc:$/;" f class:Rails
+class_name lib/rails/generators/named_base.rb /^ def class_name$/;" f class:Rails.Generators
+class_option lib/rails/generators/base.rb /^ def self.class_option(name, options={}) #:nodoc:$/;" F class:Rails
+class_path lib/rails/generators/named_base.rb /^ def class_path$/;" f class:Rails.Generators
+clear! lib/rails/application/routes_reloader.rb /^ def clear!$/;" f class:Rails.Application.RoutesReloader
+cli.rb lib/rails/cli.rb 1;" F
+clone lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function clone(object) {$/;" f
+clone tmp/app/public/javascripts/prototype.js /^ function clone(object) {$/;" f
+clone tmp/app_template/public/javascripts/prototype.js /^ function clone(object) {$/;" f
+code guides/rails_guides/helpers.rb /^ def code(&block)$/;" f class:RailsGuides.Helpers
+code guides/rails_guides/textile_extensions.rb /^ def code(body)$/;" f class:RailsGuides.TextileExtensions
+code_statistics.rb lib/rails/code_statistics.rb 1;" F
+colorize_logging lib/rails/application/configuration.rb /^ def colorize_logging$/;" f class:Rails.Application.Configuration
+colorize_logging= lib/rails/application/configuration.rb /^ def colorize_logging=(val)$/;" f class:Rails.Application.Configuration
+commands.rb lib/rails/commands.rb 1;" F
+compiled_asset_path lib/rails/application/configuration.rb /^ def compiled_asset_path$/;" f class:Rails.Application.Configuration
+compiled_asset_path lib/rails/engine/configuration.rb /^ def compiled_asset_path$/;" f class:Rails.Engine.Configuration
+config lib/rails/application.rb /^ def config$/;" f class:Rails
+config lib/rails/engine.rb /^ def config$/;" f
+config lib/rails/generators/rails/app/app_generator.rb /^ def config$/;" f class:Rails.AppBuilder
+config lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def config$/;" f class:Rails.PluginBuilder
+config lib/rails/plugin.rb /^ def config$/;" f class:Rails
+config lib/rails/railtie.rb /^ def config$/;" f class:Rails
+configru lib/rails/generators/rails/app/app_generator.rb /^ def configru$/;" f class:Rails.AppBuilder
+configurable.rb lib/rails/railtie/configurable.rb 1;" F
+configuration lib/rails.rb /^ def configuration$/;" f class:Rails
+configuration.rb lib/rails/application/configuration.rb 1;" F
+configuration.rb lib/rails/configuration.rb 1;" F
+configuration.rb lib/rails/engine/configuration.rb 1;" F
+configuration.rb lib/rails/railtie/configuration.rb 1;" F
+configuration_test.rb test/application/configuration_test.rb 1;" F
+configure lib/rails/generators.rb /^ def self.configure!(config = Rails.application.config.generators) #:nodoc:$/;" F class:Rails.Generators
+configure lib/rails/railtie/configurable.rb /^ def configure(&block)$/;" f class:Rails.Railtie.Configurable.ClassMethods
+consider_all_requests_local? lib/rails/info_controller.rb /^ def consider_all_requests_local?$/;" f class:Rails
+console lib/rails/railtie.rb /^ def console(&blk)$/;" f class:Rails.Railtie
+console.rb lib/rails/commands/console.rb 1;" F
+console_test.rb test/application/console_test.rb 1;" F
+controller lib/rails/console/helpers.rb /^def controller$/;" f
+controller test/isolation/abstract_unit.rb /^ def controller(name, contents)$/;" f
+controller.rb lib/rails/generators/rails/controller/templates/controller.rb 1;" F
+controller.rb lib/rails/generators/rails/scaffold_controller/templates/controller.rb 1;" F
+controller_class_name lib/rails/generators/resource_helpers.rb /^ def controller_class_name$/;" f class:Rails.Generators.ResourceHelpers
+controller_class_path lib/rails/generators/resource_helpers.rb /^ def controller_class_path$/;" f class:Rails.Generators.ResourceHelpers
+controller_file_name lib/rails/generators/resource_helpers.rb /^ def controller_file_name$/;" f class:Rails.Generators.ResourceHelpers
+controller_file_path lib/rails/generators/resource_helpers.rb /^ def controller_file_path$/;" f class:Rails.Generators.ResourceHelpers
+controller_generator.rb lib/rails/generators/erb/controller/controller_generator.rb 1;" F
+controller_generator.rb lib/rails/generators/rails/controller/controller_generator.rb 1;" F
+controller_generator.rb lib/rails/generators/test_unit/controller/controller_generator.rb 1;" F
+controller_generator_test.rb test/generators/controller_generator_test.rb 1;" F
+controller_i18n_scope lib/rails/generators/resource_helpers.rb /^ def controller_i18n_scope$/;" f class:Rails.Generators.ResourceHelpers
+controls.js lib/rails/generators/rails/app/templates/public/javascripts/controls.js 1;" F
+controls.js tmp/app/public/javascripts/controls.js 1;" F
+controls.js tmp/app_template/public/javascripts/controls.js 1;" F
+copy_app test/application/configuration_test.rb /^ def copy_app$/;" f class:ApplicationTests.ConfigurationTest
+copy_assets guides/rails_guides/generator.rb /^ def copy_assets$/;" f class:RailsGuides.Generator
+copy_routes test/generators/generators_test_helper.rb /^ def copy_routes$/;" f class:GeneratorsTestHelper
+copy_stylesheets_file lib/rails/generators/rails/stylesheets/stylesheets_generator.rb /^ def copy_stylesheets_file$/;" f class:Rails.Generators.StylesheetsGenerator
+copy_view_files lib/rails/generators/erb/controller/controller_generator.rb /^ def copy_view_files$/;" f class:Erb.Generators.ControllerGenerator
+copy_view_files lib/rails/generators/erb/scaffold/scaffold_generator.rb /^ def copy_view_files$/;" f class:Erb.Generators.ScaffoldGenerator
+count test/application/runner_test.rb /^ def self.count$/;" F class:ApplicationTests.RunnerTest.setup.User
+create lib/rails/generators/rails/scaffold_controller/templates/controller.rb /^ def create$/;" f
+create_active_record_files lib/rails/generators/rails/app/app_generator.rb /^ def create_active_record_files$/;" f class:Generators.AppGenerator
+create_app_files lib/rails/generators/rails/app/app_generator.rb /^ def create_app_files$/;" f class:Generators.AppGenerator
+create_app_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_app_files$/;" f class:Generators.PluginNewGenerator
+create_boot_file lib/rails/generators/rails/app/app_generator.rb /^ def create_boot_file$/;" f class:Generators.AppGenerator
+create_config_files lib/rails/generators/rails/app/app_generator.rb /^ def create_config_files$/;" f class:Generators.AppGenerator
+create_config_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_config_files$/;" f class:Generators.PluginNewGenerator
+create_controller_files lib/rails/generators/rails/controller/controller_generator.rb /^ def create_controller_files$/;" f class:Rails.Generators.ControllerGenerator
+create_controller_files lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb /^ def create_controller_files$/;" f class:Rails.Generators.ScaffoldControllerGenerator
+create_db_files lib/rails/generators/rails/app/app_generator.rb /^ def create_db_files$/;" f class:Generators.AppGenerator
+create_doc_files lib/rails/generators/rails/app/app_generator.rb /^ def create_doc_files$/;" f class:Generators.AppGenerator
+create_dummy_app lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_dummy_app(path = nil)$/;" f class:Generators.PluginNewGenerator
+create_fixture_file lib/rails/generators/test_unit/model/model_generator.rb /^ def create_fixture_file$/;" f class:TestUnit.Generators.ModelGenerator
+create_fixtures lib/rails/test_help.rb /^ def create_fixtures(*table_names, &block)$/;" f
+create_generated_attribute lib/rails/generators/test_case.rb /^ def create_generated_attribute(attribute_type, name = 'test')$/;" f class:Rails.Generators.TestCase
+create_generator_files lib/rails/generators/rails/generator/generator_generator.rb /^ def create_generator_files$/;" f class:Rails.Generators.GeneratorGenerator
+create_helper_files lib/rails/generators/rails/helper/helper_generator.rb /^ def create_helper_files$/;" f class:Rails.Generators.HelperGenerator
+create_helper_files lib/rails/generators/test_unit/helper/helper_generator.rb /^ def create_helper_files$/;" f class:TestUnit.Generators.HelperGenerator
+create_javascript_files lib/rails/generators/rails/app/app_generator.rb /^ def create_javascript_files$/;" f class:Generators.AppGenerator
+create_javascript_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_javascript_files$/;" f class:Generators.PluginNewGenerator
+create_lib_files lib/rails/generators/rails/app/app_generator.rb /^ def create_lib_files$/;" f class:Generators.AppGenerator
+create_lib_files lib/rails/generators/rails/plugin/plugin_generator.rb /^ def create_lib_files$/;" f class:Rails.Generators.PluginGenerator
+create_lib_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_lib_files$/;" f class:Generators.PluginNewGenerator
+create_log_files lib/rails/generators/rails/app/app_generator.rb /^ def create_log_files$/;" f class:Generators.AppGenerator
+create_output_dir_if_needed guides/rails_guides/generator.rb /^ def create_output_dir_if_needed$/;" f class:RailsGuides.Generator
+create_public_files lib/rails/generators/rails/app/app_generator.rb /^ def create_public_files$/;" f class:Generators.AppGenerator
+create_public_image_files lib/rails/generators/rails/app/app_generator.rb /^ def create_public_image_files$/;" f class:Generators.AppGenerator
+create_public_stylesheets_files lib/rails/generators/rails/app/app_generator.rb /^ def create_public_stylesheets_files$/;" f class:Generators.AppGenerator
+create_public_stylesheets_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_public_stylesheets_files$/;" f class:Generators.PluginNewGenerator
+create_root lib/rails/generators/app_base.rb /^ def create_root$/;" f class:Rails.Generators.AppBase
+create_root_files lib/rails/generators/rails/app/app_generator.rb /^ def create_root_files$/;" f class:Generators.AppGenerator
+create_root_files lib/rails/generators/rails/plugin/plugin_generator.rb /^ def create_root_files$/;" f class:Rails.Generators.PluginGenerator
+create_root_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_root_files$/;" f class:Generators.PluginNewGenerator
+create_root_folder lib/rails/generators/erb/scaffold/scaffold_generator.rb /^ def create_root_folder$/;" f class:Erb.Generators.ScaffoldGenerator
+create_script_files lib/rails/generators/rails/app/app_generator.rb /^ def create_script_files$/;" f class:Generators.AppGenerator
+create_script_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_script_files$/;" f class:Generators.PluginNewGenerator
+create_tasks_files lib/rails/generators/rails/plugin/plugin_generator.rb /^ def create_tasks_files$/;" f class:Rails.Generators.PluginGenerator
+create_test_dummy_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_test_dummy_files$/;" f class:Generators.PluginNewGenerator
+create_test_dummy_template.rb test/fixtures/lib/create_test_dummy_template.rb 1;" F
+create_test_file lib/rails/generators/test_unit/model/model_generator.rb /^ def create_test_file$/;" f class:TestUnit.Generators.ModelGenerator
+create_test_files lib/rails/generators/rails/app/app_generator.rb /^ def create_test_files$/;" f class:Generators.AppGenerator
+create_test_files lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def create_test_files$/;" f class:Generators.PluginNewGenerator
+create_test_files lib/rails/generators/test_unit/controller/controller_generator.rb /^ def create_test_files$/;" f class:TestUnit.Generators.ControllerGenerator
+create_test_files lib/rails/generators/test_unit/integration/integration_generator.rb /^ def create_test_files$/;" f class:TestUnit.Generators.IntegrationGenerator
+create_test_files lib/rails/generators/test_unit/mailer/mailer_generator.rb /^ def create_test_files$/;" f class:TestUnit.Generators.MailerGenerator
+create_test_files lib/rails/generators/test_unit/observer/observer_generator.rb /^ def create_test_files$/;" f class:TestUnit.Generators.ObserverGenerator
+create_test_files lib/rails/generators/test_unit/performance/performance_generator.rb /^ def create_test_files$/;" f class:TestUnit.Generators.PerformanceGenerator
+create_test_files lib/rails/generators/test_unit/plugin/plugin_generator.rb /^ def create_test_files$/;" f class:TestUnit.Generators.PluginGenerator
+create_test_files lib/rails/generators/test_unit/scaffold/scaffold_generator.rb /^ def create_test_files$/;" f class:TestUnit.Generators.ScaffoldGenerator
+create_tmp_files lib/rails/generators/rails/app/app_generator.rb /^ def create_tmp_files$/;" f class:Generators.AppGenerator
+create_vendor_files lib/rails/generators/rails/app/app_generator.rb /^ def create_vendor_files$/;" f class:Generators.AppGenerator
+current_migration_number lib/rails/generators/migration.rb /^ def current_migration_number(dirname) #:nodoc:$/;" f class:Rails.Generators.Migration.ClassMethods
+database_configuration lib/rails/application/configuration.rb /^ def database_configuration$/;" f class:Rails.Application.Configuration
+database_gemfile_entry lib/rails/generators/app_base.rb /^ def database_gemfile_entry$/;" f class:Rails.Generators
+database_yml lib/rails/generators/rails/app/app_generator.rb /^ def database_yml$/;" f class:Rails
+db lib/rails/generators/rails/app/app_generator.rb /^ def db$/;" f class:Rails
+dbconsole.rb lib/rails/commands/dbconsole.rb 1;" F
+debugger.rb lib/rails/rack/debugger.rb 1;" F
+default lib/rails/commands/plugin.rb /^ def self.default$/;" F class:RailsEnvironment
+default lib/rails/commands/plugin.rb /^ def self.default=(rails_env)$/;" F class:RailsEnvironment
+default lib/rails/generators/generated_attribute.rb /^ def default$/;" f class:Rails.Generators
+default_aliases_for_option lib/rails/generators/base.rb /^ def self.default_aliases_for_option(name, options)$/;" F class:Rails
+default_asset_path lib/rails/application.rb /^ def default_asset_path$/;" f class:Rails
+default_asset_path lib/rails/engine.rb /^ def default_asset_path$/;" f
+default_files test/generators/app_generator_test.rb /^ def default_files$/;" f class:AppGeneratorTest
+default_files test/generators/app_generator_test.rb /^ def default_files$/;" f class:CustomAppGeneratorTest
+default_files test/generators/plugin_new_generator_test.rb /^ def default_files$/;" f class:CustomPluginGeneratorTest
+default_files test/generators/plugin_new_generator_test.rb /^ def default_files$/;" f class:PluginNewGeneratorTest
+default_for_option lib/rails/generators/base.rb /^ def self.default_for_option(config, name, options, default)$/;" F class:Rails
+default_middleware_stack lib/rails/application.rb /^ def default_middleware_stack$/;" f class:Rails
+default_middleware_stack lib/rails/engine.rb /^ def default_middleware_stack$/;" f
+default_options lib/rails/commands/server.rb /^ def default_options$/;" f class:Rails.Server
+default_source_root lib/rails/generators/base.rb /^ def self.default_source_root$/;" F class:Rails
+default_value_for_option lib/rails/generators/base.rb /^ def self.default_value_for_option(name, options)$/;" F class:Rails
+defined_app_const_base lib/rails/generators/rails/app/app_generator.rb /^ def defined_app_const_base$/;" f class:Generators.AppGenerator
+defined_app_name lib/rails/generators/rails/app/app_generator.rb /^ def defined_app_name$/;" f class:Generators.AppGenerator
+delete lib/rails/configuration.rb /^ def delete(*args, &block)$/;" f class:Rails.Configuration.MiddlewareStackProxy
+delete test/isolation/abstract_unit.rb /^ def delete(file)$/;" f class:Bukkit
+desc lib/rails/generators/base.rb /^ def self.desc(description=nil)$/;" F class:Rails.Generators.Base
+destination lib/rails/generators/test_case.rb /^ def self.destination(path)$/;" F class:Rails.Generators.TestCase
+destination_root_is_set? lib/rails/generators/test_case.rb /^ def destination_root_is_set? #:nodoc:$/;" f class:Rails.Generators.TestCase
+destroy lib/rails/generators/active_model.rb /^ def destroy$/;" f class:Rails.Generators.ActiveModel
+destroy lib/rails/generators/rails/scaffold_controller/templates/controller.rb /^ def destroy$/;" f
+destroy.rb lib/rails/commands/destroy.rb 1;" F
+determine_install_method lib/rails/commands/plugin.rb /^ def determine_install_method$/;" f class:Commands.Install
+dev_or_edge? lib/rails/generators/app_base.rb /^ def dev_or_edge?$/;" f class:Rails.Generators
+development.rb tmp/app_template/config/environments/development.rb 1;" F
+disableFormElements lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function disableFormElements(form) {$/;" f
+disableFormElements tmp/app/public/javascripts/rails.js /^ function disableFormElements(form) {$/;" f
+disableFormElements tmp/app_template/public/javascripts/rails.js /^ function disableFormElements(form) {$/;" f
+display lib/rails/source_annotation_extractor.rb /^ def display(results, options={})$/;" f
+distance guides/rails_guides/levenshtein.rb /^ def self.distance(s1, s2)$/;" F class:RailsGuides.Levenshtein
+doc lib/rails/generators/rails/app/app_generator.rb /^ def doc$/;" f class:Rails
+download lib/rails/commands/plugin.rb /^ def download(link)$/;" f class:RecursiveHTTPFetcher
+dragdrop.js lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js 1;" F
+dragdrop.js tmp/app/public/javascripts/dragdrop.js 1;" F
+dragdrop.js tmp/app_template/public/javascripts/dragdrop.js 1;" F
+drop lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var drop, affected = [];$/;" v
+drop tmp/app/public/javascripts/dragdrop.js /^ var drop, affected = [];$/;" v
+drop tmp/app_template/public/javascripts/dragdrop.js /^ var drop, affected = [];$/;" v
+droponOptions lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var droponOptions = Sortable.options(dropon);$/;" v
+droponOptions tmp/app/public/javascripts/dragdrop.js /^ var droponOptions = Sortable.options(dropon);$/;" v
+droponOptions tmp/app_template/public/javascripts/dragdrop.js /^ var droponOptions = Sortable.options(dropon);$/;" v
+dummy_path lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def dummy_path(path = nil)$/;" f class:Generators.PluginNewGenerator
+eager_load lib/rails/paths.rb /^ def eager_load$/;" f class:Rails.Paths.Root
+eager_load! lib/rails/application.rb /^ def eager_load! #:nodoc:$/;" f class:Rails
+eager_load! lib/rails/engine.rb /^ def eager_load!$/;" f class:Rails
+eager_load! lib/rails/railtie.rb /^ def eager_load!$/;" f class:Rails
+eager_load_paths lib/rails/engine/configuration.rb /^ def eager_load_paths$/;" f class:Rails.Engine.Configuration
+edit lib/rails/generators/rails/scaffold_controller/templates/controller.rb /^ def edit$/;" f
+effects.js lib/rails/generators/rails/app/templates/public/javascripts/effects.js 1;" F
+effects.js tmp/app/public/javascripts/effects.js 1;" F
+effects.js tmp/app_template/public/javascripts/effects.js 1;" F
+empty_builder.rb test/fixtures/lib/app_builders/empty_builder.rb 1;" F
+empty_builder.rb test/fixtures/lib/plugin_builders/empty_builder.rb 1;" F
+empty_directory_with_gitkeep lib/rails/generators/app_base.rb /^ def empty_directory_with_gitkeep(destination, config = {})$/;" f class:Rails.Generators
+enableFormElements lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function enableFormElements(form) {$/;" f
+enableFormElements tmp/app/public/javascripts/rails.js /^ function enableFormElements(form) {$/;" f
+enableFormElements tmp/app_template/public/javascripts/rails.js /^ function enableFormElements(form) {$/;" f
+encoding= lib/rails/application/configuration.rb /^ def encoding=(value)$/;" f class:Rails.Application.Configuration
+endpoint lib/rails/engine.rb /^ def endpoint(endpoint = nil)$/;" f class:Rails.Engine
+endpoint lib/rails/engine.rb /^ def endpoint$/;" f
+engine test/isolation/abstract_unit.rb /^ def engine(name)$/;" f
+engine.rb lib/rails/engine.rb 1;" F
+engine.rb lib/rails/generators/rails/plugin_new/templates/lib/%name%/engine.rb 1;" F
+engine_route test/railties/mounted_engine_test.rb /^ def engine_route$/;" f class:ApplicationTests.ApplicationRoutingTest.ApplicationGeneratingController
+engine_route_in_view test/railties/mounted_engine_test.rb /^ def engine_route_in_view$/;" f class:ApplicationTests.ApplicationRoutingTest.ApplicationGeneratingController
+engine_test.rb test/railties/engine_test.rb 1;" F
+engines lib/rails/engine/railties.rb /^ def self.engines$/;" F class:Rails.Engine.Railties
+ensure_current_path lib/rails/generators/test_case.rb /^ def ensure_current_path #:nodoc:$/;" f class:Rails.Generators.TestCase
+enumerate lib/rails/source_annotation_extractor.rb /^ def self.enumerate(tag, options={})$/;" F class:SourceAnnotationExtractor
+env lib/rails.rb /^ def env$/;" f class:Rails
+env= lib/rails.rb /^ def env=(environment)$/;" f class:Rails
+env_config lib/rails/application.rb /^ def env_config$/;" f class:Rails
+env_config lib/rails/engine.rb /^ def env_config$/;" f
+environment lib/rails/generators/actions.rb /^ def environment(data=nil, options={}, &block)$/;" f class:Rails.Generators.Actions
+environment.rb lib/rails/generators/rails/app/templates/config/environment.rb 1;" F
+environment.rb tmp/app/config/environment.rb 1;" F
+environment.rb tmp/app_template/config/environment.rb 1;" F
+environment= lib/rails/commands/plugin.rb /^ def environment=(value)$/;" f class:Commands.Plugin
+erb.rb lib/rails/generators/erb.rb 1;" F
+errors lib/rails/generators/active_model.rb /^ def errors$/;" f class:Rails.Generators.ActiveModel
+exec_script_rails lib/rails/script_rails_loader.rb /^ def self.exec_script_rails!$/;" F class:Rails.ScriptRailsLoader
+existent lib/rails/paths.rb /^ def existent$/;" f class:Rails
+expanded lib/rails/paths.rb /^ def expanded$/;" f class:Rails
+expires_etag test/application/middleware/cache_test.rb /^ def expires_etag$/;" f class:ApplicationTests.RoutingTest.simple_controller.ExpiresController
+expires_header test/application/middleware/cache_test.rb /^ def expires_header$/;" f class:ApplicationTests.RoutingTest.simple_controller.ExpiresController
+expires_last_modified test/application/middleware/cache_test.rb /^ def expires_last_modified$/;" f class:ApplicationTests.RoutingTest.simple_controller.ExpiresController
+extend lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function extend(destination, source) {$/;" f
+extend tmp/app/public/javascripts/prototype.js /^ function extend(destination, source) {$/;" f
+extend tmp/app_template/public/javascripts/prototype.js /^ function extend(destination, source) {$/;" f
+externals lib/rails/commands/plugin.rb /^ def externals$/;" f class:RailsEnvironment
+externals= lib/rails/commands/plugin.rb /^ def externals=(items)$/;" f class:RailsEnvironment
+extify lib/rails/generators/actions.rb /^ def extify(name)$/;" f class:Rails.Generators.route
+extract_anchors guides/rails_guides/generator.rb /^ def extract_anchors(html)$/;" f class:RailsGuides
+extract_annotations_from lib/rails/source_annotation_extractor.rb /^ def extract_annotations_from(file, pattern)$/;" f
+extract_body test/isolation/abstract_unit.rb /^ def extract_body(response)$/;" f class:TestHelpers.Rack
+fallbacks lib/rails/generators.rb /^ def self.fallbacks$/;" F class:Rails.Generators
+fetch lib/rails/commands/plugin.rb /^ def fetch(links = @urls_to_fetch)$/;" f
+fetch_dir lib/rails/commands/plugin.rb /^ def fetch_dir(url)$/;" f
+field_type lib/rails/generators/generated_attribute.rb /^ def field_type$/;" f class:Rails.Generators.GeneratedAttribute
+file lib/rails/generators/rails/app/app_generator.rb /^ def file(*args, &block)$/;" f class:Generators.AppGenerator
+file_path lib/rails/generators/named_base.rb /^ def file_path$/;" f class:Rails.Generators
+filename_with_extensions lib/rails/generators/erb.rb /^ def filename_with_extensions(name)$/;" f class:Erb.Generators.Base
+filter_backtrace_with_cleaning lib/rails/backtrace_cleaner.rb /^ def filter_backtrace_with_cleaning(backtrace, prefix=nil)$/;" f class:Rails.BacktraceFilterForTestUnit
+filter_by lib/rails/paths.rb /^ def filter_by(constraint)$/;" f class:Rails.Paths.Root
+finalize! lib/rails/application/routes_reloader.rb /^ def finalize!$/;" f class:Rails.Application.RoutesReloader
+find lib/rails/commands/plugin.rb /^ def self.find(dir=nil)$/;" F class:RailsEnvironment
+find lib/rails/commands/plugin.rb /^ def self.find(name)$/;" F class:Plugin
+find lib/rails/engine.rb /^ def find(path)$/;" f class:Rails.Engine
+find lib/rails/generators/active_model.rb /^ def self.find(klass, params=nil)$/;" F class:Rails.Generators.ActiveModel
+find lib/rails/source_annotation_extractor.rb /^ def find(dirs=%w(app lib test))$/;" f class:SourceAnnotationExtractor
+find_by_namespace lib/rails/generators.rb /^ def self.find_by_namespace(name, base=nil, context=nil) #:nodoc:$/;" F class:Rails.Generators
+find_cmd lib/rails/commands/dbconsole.rb /^ def find_cmd(*commands)$/;" f
+find_in lib/rails/source_annotation_extractor.rb /^ def find_in(dir)$/;" f class:SourceAnnotationExtractor
+find_root_with_flag lib/rails/engine.rb /^ def find_root_with_flag(flag, default=nil)$/;" f
+finish_template lib/rails/generators/rails/app/app_generator.rb /^ def finish_template$/;" f class:Generators.AppGenerator
+finish_template lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def finish_template$/;" f class:Generators.PluginNewGenerator
+finisher.rb lib/rails/application/finisher.rb 1;" F
+first lib/rails/paths.rb /^ def first$/;" f class:Rails.Paths.Path
+fixjour_generator.rb test/fixtures/lib/generators/active_record/fixjour_generator.rb 1;" F
+fixjour_generator.rb test/fixtures/lib/generators/fixjour_generator.rb 1;" F
+foo_or_bar? test/application/routing_test.rb /^ def foo_or_bar?$/;" f class:BarHelper
+foobar_generator.rb test/fixtures/lib/rails/generators/foobar/foobar_generator.rb 1;" F
+format lib/rails/generators/erb.rb /^ def format$/;" f class:Erb.Generators.Base
+format lib/rails/generators/erb/mailer/mailer_generator.rb /^ def format$/;" f class:Erb.Generators.MailerGenerator
+framework_path test/isolation/abstract_unit.rb /^ def framework_path$/;" f class:TestHelpers.Paths
+framework_version lib/rails/info.rb /^ def framework_version(framework)$/;" f class:Rails
+frameworks lib/rails/info.rb /^ def frameworks$/;" f class:Rails
+frameworks_test.rb test/application/initializers/frameworks_test.rb 1;" F
+from_app test/railties/engine_test.rb /^ def from_app$/;" f class:Bukkits
+from_app_helper test/application/initializers/frameworks_test.rb /^ def from_app_helper$/;" f class:ApplicationHelper
+from_bar_helper test/application/initializers/frameworks_test.rb /^ def from_bar_helper$/;" f class:BarHelper
+from_foo_helper test/application/initializers/frameworks_test.rb /^ def from_foo_helper$/;" f class:FooHelper
+full? lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def full?$/;" f class:Generators.PluginNewGenerator
+functional_test.rb lib/rails/generators/test_unit/controller/templates/functional_test.rb 1;" F
+functional_test.rb lib/rails/generators/test_unit/mailer/templates/functional_test.rb 1;" F
+functional_test.rb lib/rails/generators/test_unit/scaffold/templates/functional_test.rb 1;" F
+gem lib/rails/generators/actions.rb /^ def gem(*args)$/;" f class:Rails.Generators.Actions
+gem_for_database lib/rails/generators/app_base.rb /^ def gem_for_database$/;" f class:Rails.Generators
+gemfile lib/rails/generators/rails/app/app_generator.rb /^ def gemfile$/;" f class:Rails.AppBuilder
+gemfile lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def gemfile$/;" f class:Rails.PluginBuilder
+gemspec lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def gemspec$/;" f class:Rails.PluginBuilder
+generate guides/rails_guides/generator.rb /^ def generate$/;" f class:RailsGuides.Generator
+generate lib/rails/generators/actions.rb /^ def generate(what, *args)$/;" f class:Rails.Generators
+generate.rb lib/rails/commands/generate.rb 1;" F
+generate? guides/rails_guides/generator.rb /^ def generate?(source_file, output_file)$/;" f class:RailsGuides.Generator
+generate_application_route test/railties/mounted_engine_test.rb /^ def generate_application_route$/;" f class:ApplicationTests.ApplicationRoutingTest.Blog.PostsController
+generate_guide guides/rails_guides/generator.rb /^ def generate_guide(guide, output_file)$/;" f class:RailsGuides.Generator
+generate_guides guides/rails_guides/generator.rb /^ def generate_guides$/;" f class:RailsGuides.Generator
+generate_railtie_name lib/rails/railtie.rb /^ def generate_railtie_name(class_or_module)$/;" f class:Rails.Railtie
+generate_test_dummy lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def generate_test_dummy(force = false)$/;" f class:Rails.PluginBuilder
+generate_test_dummy test/fixtures/lib/plugin_builders/spec_builder.rb /^ def generate_test_dummy$/;" f class:PluginBuilder
+generated_attribute.rb lib/rails/generators/generated_attribute.rb 1;" F
+generated_attribute_test.rb test/generators/generated_attribute_test.rb 1;" F
+generator lib/rails/generators/test_case.rb /^ def generator(args=self.default_arguments, options={}, config={})$/;" f class:Rails.Generators.TestCase
+generator.rb guides/rails_guides/generator.rb 1;" F
+generator_dir lib/rails/generators/rails/generator/generator_generator.rb /^ def generator_dir$/;" f class:Rails.Generators.GeneratorGenerator
+generator_generator.rb lib/rails/generators/rails/generator/generator_generator.rb 1;" F
+generator_generator_test.rb test/generators/generator_generator_test.rb 1;" F
+generator_name lib/rails/generators/base.rb /^ def self.generator_name$/;" F class:Rails
+generators lib/rails/engine/configuration.rb /^ def generators #:nodoc$/;" f class:Rails.Engine.Configuration
+generators lib/rails/railtie.rb /^ def generators(&blk)$/;" f class:Rails.Railtie
+generators lib/rails/railtie/configuration.rb /^ def generators(&block) #:nodoc$/;" f class:Rails.Railtie.Configuration
+generators.rb lib/rails/generators.rb 1;" F
+generators_test.rb test/application/generators_test.rb 1;" F
+generators_test.rb test/generators_test.rb 1;" F
+generators_test_helper.rb test/generators/generators_test_helper.rb 1;" F
+get test/isolation/abstract_unit.rb /^ def get(path)$/;" f class:TestHelpers
+get_builder_class lib/rails/generators/rails/app/app_generator.rb /^ def get_builder_class$/;" f class:Generators.AppGenerator
+get_builder_class lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def get_builder_class$/;" f class:Generators.PluginNewGenerator
+git lib/rails/generators/actions.rb /^ def git(command={})$/;" f class:Rails.Generators
+git_url? lib/rails/commands/plugin.rb /^ def git_url?$/;" f class:Plugin
+gitignore lib/rails/generators/rails/app/app_generator.rb /^ def gitignore$/;" f class:Rails.AppBuilder
+gitignore lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def gitignore$/;" f class:Rails.PluginBuilder
+gitignore test/fixtures/lib/app_builders/simple_builder.rb /^ def gitignore$/;" f class:AppBuilder
+gitignore test/fixtures/lib/app_builders/tweak_builder.rb /^ def gitignore$/;" f class:AppBuilder
+gitignore test/fixtures/lib/plugin_builders/simple_builder.rb /^ def gitignore$/;" f class:PluginBuilder
+gitignore test/fixtures/lib/plugin_builders/tweak_builder.rb /^ def gitignore$/;" f class:PluginBuilder
+global_plugins lib/rails/plugin.rb /^ def self.global_plugins$/;" F class:Rails.Plugin
+guess_name lib/rails/commands/plugin.rb /^ def guess_name(url)$/;" f
+guide guides/rails_guides/helpers.rb /^ def guide(name, url, options = {}, &block)$/;" f class:RailsGuides.Helpers
+guideMenu guides/assets/javascripts/guides.js /^function guideMenu(){$/;" f
+guides.js guides/assets/javascripts/guides.js 1;" F
+guides_to_generate guides/rails_guides/generator.rb /^ def guides_to_generate$/;" f class:RailsGuides.Generator
+guides_to_validate guides/w3c_validator.rb /^ def guides_to_validate$/;" f class:RailsGuides.Validator
+handleMethod lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function handleMethod(element) {$/;" f
+handleMethod tmp/app/public/javascripts/rails.js /^ function handleMethod(element) {$/;" f
+handleMethod tmp/app_template/public/javascripts/rails.js /^ function handleMethod(element) {$/;" f
+handleRemote lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function handleRemote(element) {$/;" f
+handleRemote tmp/app/public/javascripts/rails.js /^ function handleRemote(element) {$/;" f
+handleRemote tmp/app_template/public/javascripts/rails.js /^ function handleRemote(element) {$/;" f
+handler lib/rails/generators/erb.rb /^ def handler$/;" f class:Erb.Generators.Base
+help lib/rails/generators.rb /^ def self.help(command = 'generate')$/;" F class:Rails
+help_the_engine test/railties/engine_test.rb /^ def help_the_engine$/;" f class:EngineHelper
+helper lib/rails/console/helpers.rb /^def helper$/;" f
+helper.rb lib/rails/generators/rails/helper/templates/helper.rb 1;" F
+helper_generator.rb lib/rails/generators/rails/helper/helper_generator.rb 1;" F
+helper_generator.rb lib/rails/generators/test_unit/helper/helper_generator.rb 1;" F
+helper_generator_test.rb test/generators/helper_generator_test.rb 1;" F
+helper_test.rb lib/rails/generators/test_unit/helper/templates/helper_test.rb 1;" F
+helpers.rb guides/rails_guides/helpers.rb 1;" F
+helpers.rb lib/rails/console/helpers.rb 1;" F
+hidden_namespaces lib/rails/generators.rb /^ def self.hidden_namespaces$/;" F class:Rails.Generators
+hide_namespaces lib/rails/generators.rb /^ def hide_namespaces(*namespaces)$/;" f class:Rails.Generators
+hook_for lib/rails/generators/base.rb /^ def self.hook_for(*names, &block)$/;" F class:Rails.Generators
+hooks lib/rails/generators/base.rb /^ def self.hooks #:nodoc:$/;" F class:Rails
+hooks_test.rb test/application/initializers/hooks_test.rb 1;" F
+human_name lib/rails/generators/generated_attribute.rb /^ def human_name$/;" f class:Rails
+human_name lib/rails/generators/named_base.rb /^ def human_name$/;" f class:Rails.Generators
+i18n_scope lib/rails/generators/named_base.rb /^ def i18n_scope$/;" f class:Rails.Generators
+i18n_test.rb test/application/initializers/i18n_test.rb 1;" F
+id test/railties/mounted_engine_test.rb /^ def id$/;" f class:ApplicationTests.ApplicationRoutingTest.Blog.Post
+images lib/rails/generators/rails/app/app_generator.rb /^ def images$/;" f
+in_rails_application lib/rails/script_rails_loader.rb /^ def self.in_rails_application?$/;" F class:Rails
+in_rails_application_subdirectory lib/rails/script_rails_loader.rb /^ def self.in_rails_application_subdirectory?(path = Pathname.new(Dir.pwd))$/;" F class:Rails
+included lib/rails/backtrace_cleaner.rb /^ def self.included(klass)$/;" F class:Rails.BacktraceFilterForTestUnit
+included lib/rails/generators/migration.rb /^ def self.included(base) #:nodoc:$/;" F class:Rails.Generators.Migration
+included lib/rails/generators/resource_helpers.rb /^ def self.included(base) #:nodoc:$/;" F class:Rails.Generators.ResourceHelpers
+included lib/rails/initializable.rb /^ def self.included(base)$/;" F class:Rails.Initializable
+included test/generators/generators_test_helper.rb /^ def self.included(base)$/;" F class:GeneratorsTestHelper
+included_helpers test/application/initializers/frameworks_test.rb /^ def included_helpers$/;" f class:FooController
+indent lib/rails/generators/named_base.rb /^ def indent(content, multiplier = 2)$/;" f class:Rails.Generators.NamedBase
+index guides/rails_guides/indexer.rb /^ def index$/;" f class:RailsGuides.Indexer
+index lib/rails/generators/rails/scaffold_controller/templates/controller.rb /^ def index$/;" f
+index test/application/configuration_test.rb /^ def index$/;" f
+index test/application/middleware/sendfile_test.rb /^ def index$/;" f class:ApplicationTests.SendfileTest
+index test/application/middleware_test.rb /^ def index$/;" f
+index test/application/routing_test.rb /^ def index$/;" f class:Admin.FooController
+index test/application/routing_test.rb /^ def index$/;" f class:BarController
+index test/application/routing_test.rb /^ def index$/;" f class:FooController
+index test/application/routing_test.rb /^ def index$/;" f class:YazilarController
+index test/application/url_generation_test.rb /^ def index$/;" f class:ApplicationTests
+index test/isolation/abstract_unit.rb /^ def index$/;" f class:simple_controller.FooController
+index test/railties/engine_test.rb /^ def index$/;" f class:Bukkits.HomeController
+index test/railties/engine_test.rb /^ def index$/;" f class:Bukkits
+index test/railties/engine_test.rb /^ def index$/;" f class:FooController
+index test/railties/mounted_engine_test.rb /^ def index$/;" f class:ApplicationTests.ApplicationRoutingTest.Blog.PostsController
+index test/railties/shared_tests.rb /^ def index$/;" f class:RailtiesTest.test_adds_helpers_to_controller_views.BukkitController
+index test/railties/shared_tests.rb /^ def index$/;" f class:RailtiesTest.test_adds_its_views_to_view_paths.BukkitController
+index test/railties/shared_tests.rb /^ def index$/;" f class:RailtiesTest.test_adds_its_views_to_view_paths_with_lower_proriority_than_app_ones.BukkitController
+index test/railties/shared_tests.rb /^ def index$/;" f class:RailtiesTest.test_namespaced_controllers_with_namespaced_routes.Admin
+index test/railties/shared_tests.rb /^ def index$/;" f class:RailtiesTest.test_routes_in_plugins_have_lower_priority_than_application_ones.BarController
+index test/railties/shared_tests.rb /^ def index$/;" f class:RailtiesTest.test_routes_in_plugins_have_lower_priority_than_application_ones.FooController
+index.html lib/rails/generators/rails/app/templates/public/index.html 1;" F
+index.html tmp/app/public/index.html 1;" F
+index.html tmp/app_template/public/index.html 1;" F
+index_helper lib/rails/generators/named_base.rb /^ def index_helper$/;" f class:Rails.Generators
+indexer.rb guides/rails_guides/indexer.rb 1;" F
+inflections.rb lib/rails/generators/rails/app/templates/config/initializers/inflections.rb 1;" F
+inflections.rb tmp/app_template/config/initializers/inflections.rb 1;" F
+info lib/rails/commands/plugin.rb /^ def info$/;" f class:Plugin
+info.rb lib/rails/info.rb 1;" F
+info_controller.rb lib/rails/info_controller.rb 1;" F
+inherited lib/rails/application.rb /^ def inherited(base)$/;" f class:Rails.Application
+inherited lib/rails/engine.rb /^ def inherited(base)$/;" f class:Rails.Engine
+inherited lib/rails/generators/base.rb /^ def self.inherited(base) #:nodoc:$/;" F class:Rails
+inherited lib/rails/plugin.rb /^ def self.inherited(base)$/;" F class:Rails.Plugin
+inherited lib/rails/railtie.rb /^ def inherited(base)$/;" f class:Rails.Railtie
+inherited lib/rails/railtie/configurable.rb /^ def inherited(base)$/;" f class:Rails.Railtie.Configurable.ClassMethods
+init.rb lib/rails/generators/rails/plugin/templates/init.rb 1;" F
+init.rb test/fixtures/about_yml_plugins/bad_about_yml/init.rb 1;" F
+init.rb test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb 1;" F
+initializable.rb lib/rails/initializable.rb 1;" F
+initializable_test.rb test/initializable_test.rb 1;" F
+initialize guides/rails_guides/generator.rb /^ def initialize(output=nil)$/;" f class:RailsGuides.Generator
+initialize guides/rails_guides/indexer.rb /^ def initialize(body, warnings)$/;" f class:RailsGuides.Indexer
+initialize lib/rails/application/configuration.rb /^ def initialize(*)$/;" f class:Rails.Application.Configuration
+initialize lib/rails/application/routes_reloader.rb /^ def initialize$/;" f class:Rails.Application.RoutesReloader
+initialize lib/rails/backtrace_cleaner.rb /^ def initialize$/;" f class:Rails.BacktraceCleaner
+initialize lib/rails/code_statistics.rb /^ def initialize(*pairs)$/;" f class:CodeStatistics
+initialize lib/rails/commands/console.rb /^ def initialize(app)$/;" f class:Rails.Console
+initialize lib/rails/commands/dbconsole.rb /^ def initialize(app)$/;" f class:Rails.DBConsole
+initialize lib/rails/commands/plugin.rb /^ def initialize$/;" f class:Commands.Plugin
+initialize lib/rails/commands/plugin.rb /^ def initialize(base_command)$/;" f class:Commands.Info
+initialize lib/rails/commands/plugin.rb /^ def initialize(base_command)$/;" f class:Commands.Install
+initialize lib/rails/commands/plugin.rb /^ def initialize(base_command)$/;" f class:Commands.Remove
+initialize lib/rails/commands/plugin.rb /^ def initialize(dir)$/;" f class:RailsEnvironment
+initialize lib/rails/commands/plugin.rb /^ def initialize(uri, name = nil)$/;" f class:Plugin
+initialize lib/rails/commands/plugin.rb /^ def initialize(urls_to_fetch, level = 1, cwd = ".")$/;" f class:RecursiveHTTPFetcher
+initialize lib/rails/commands/server.rb /^ def initialize(*)$/;" f class:Rails.Server
+initialize lib/rails/configuration.rb /^ def initialize$/;" f class:Rails.Configuration.Generators
+initialize lib/rails/configuration.rb /^ def initialize$/;" f class:Rails.Configuration.MiddlewareStackProxy
+initialize lib/rails/engine/configuration.rb /^ def initialize(root=nil)$/;" f class:Rails.Engine.Configuration
+initialize lib/rails/engine/railties.rb /^ def initialize(config)$/;" f class:Rails.Engine.Railties
+initialize lib/rails/generators/active_model.rb /^ def initialize(name)$/;" f class:Rails.Generators.ActiveModel
+initialize lib/rails/generators/app_base.rb /^ def initialize(*args)$/;" f class:Rails.Generators.AppBase
+initialize lib/rails/generators/generated_attribute.rb /^ def initialize(name, type)$/;" f class:Rails.Generators.GeneratedAttribute
+initialize lib/rails/generators/named_base.rb /^ def initialize(args, *options) #:nodoc:$/;" f class:Rails.Generators.NamedBase
+initialize lib/rails/generators/rails/app/app_generator.rb /^ def initialize(*args)$/;" f class:Generators.AppGenerator
+initialize lib/rails/generators/rails/app/app_generator.rb /^ def initialize(generator)$/;" f class:Rails.ActionMethods
+initialize lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def initialize(*args)$/;" f class:Generators.PluginNewGenerator
+initialize lib/rails/generators/resource_helpers.rb /^ def initialize(*args) #:nodoc:$/;" f class:Rails.Generators.ResourceHelpers
+initialize lib/rails/initializable.rb /^ def initialize(name, context, options, &block)$/;" f class:Rails.Initializable.Initializer
+initialize lib/rails/paths.rb /^ def initialize(path)$/;" f class:Rails.Paths.Root
+initialize lib/rails/paths.rb /^ def initialize(root, current, *paths)$/;" f class:Rails.Paths.Path
+initialize lib/rails/plugin.rb /^ def initialize(root)$/;" f class:Rails
+initialize lib/rails/rack/debugger.rb /^ def initialize(app)$/;" f class:Rails.Rack.Debugger
+initialize lib/rails/rack/log_tailer.rb /^ def initialize(app, log = nil)$/;" f class:Rails.Rack.LogTailer
+initialize lib/rails/rack/logger.rb /^ def initialize(app)$/;" f class:Rails.Rack.Logger
+initialize lib/rails/railtie/configuration.rb /^ def initialize$/;" f class:Rails.Railtie.Configuration
+initialize lib/rails/source_annotation_extractor.rb /^ def initialize(tag)$/;" f class:SourceAnnotationExtractor
+initialize test/isolation/abstract_unit.rb /^ def initialize(path)$/;" f class:Bukkit
+initialize test/railties/engine_test.rb /^ def initialize(app)$/;" f class:Upcaser
+initialize test/railties/shared_tests.rb /^ def initialize(app)$/;" f class:RailtiesTest.test_midleware_referenced_in_configuration.Bukkits
+initialize! lib/rails.rb /^ def initialize!$/;" f class:Rails
+initialize! lib/rails/application.rb /^ def initialize!$/;" f class:Rails
+initialize_console lib/rails/application.rb /^ def initialize_console(sandbox=false)$/;" f class:Rails
+initialize_copy lib/rails/configuration.rb /^ def initialize_copy(source)$/;" f class:Rails.Configuration.Generators
+initialize_dirs guides/rails_guides/generator.rb /^ def initialize_dirs(output)$/;" f class:RailsGuides.Generator
+initialize_generators lib/rails/application.rb /^ def initialize_generators$/;" f class:Rails
+initialize_tasks lib/rails/application.rb /^ def initialize_tasks$/;" f class:Rails
+initialized= lib/rails.rb /^ def initialized=(initialized)$/;" f class:Rails
+initialized? lib/rails.rb /^ def initialized?$/;" f class:Rails
+initializer lib/rails/generators/actions.rb /^ def initializer(filename, data=nil, &block)$/;" f class:Rails.Generators
+initializer lib/rails/initializable.rb /^ def initializer(name, opts = {}, &blk)$/;" f class:Rails.Initializable.ClassMethods
+initializers lib/rails/application.rb /^ def initializers$/;" f class:Rails
+initializers lib/rails/engine.rb /^ def initializers$/;" f
+initializers lib/rails/initializable.rb /^ def initializers$/;" f class:Rails.Initializable.ClassMethods
+initializers lib/rails/initializable.rb /^ def initializers$/;" f class:Rails.Initializable
+initializers test/initializable_test.rb /^ def self.initializers$/;" F class:Application
+initializers test/initializable_test.rb /^ def self.initializers$/;" F class:InitializableTests.OverriddenInitializer
+initializers_chain lib/rails/initializable.rb /^ def initializers_chain$/;" f class:Rails.Initializable.ClassMethods
+initializers_for lib/rails/initializable.rb /^ def initializers_for(binding)$/;" f class:Rails.Initializable.ClassMethods
+insertHiddenField lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function insertHiddenField(form, name, value) {$/;" f
+insertHiddenField tmp/app/public/javascripts/rails.js /^ function insertHiddenField(form, name, value) {$/;" f
+insertHiddenField tmp/app_template/public/javascripts/rails.js /^ function insertHiddenField(form, name, value) {$/;" f
+insert_after lib/rails/configuration.rb /^ def insert_after(*args, &block)$/;" f class:Rails.Configuration.MiddlewareStackProxy
+insert_before lib/rails/configuration.rb /^ def insert_before(*args, &block)$/;" f class:Rails.Configuration.MiddlewareStackProxy
+inside_template lib/rails/generators/named_base.rb /^ def inside_template$/;" f class:Rails.Generators.NamedBase
+inside_template? lib/rails/generators/named_base.rb /^ def inside_template?$/;" f class:Rails.Generators.NamedBase
+inspect lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function inspect(object) {$/;" f
+inspect tmp/app/public/javascripts/prototype.js /^ function inspect(object) {$/;" f
+inspect tmp/app_template/public/javascripts/prototype.js /^ function inspect(object) {$/;" f
+install lib/rails/commands/plugin.rb /^ def install(method=nil, options = {})$/;" f class:Plugin
+install lib/rails/commands/plugin.rb /^ def install(name_uri_or_plugin)$/;" f class:RailsEnvironment
+install.rb lib/rails/generators/rails/plugin/templates/install.rb 1;" F
+install_using_checkout lib/rails/commands/plugin.rb /^ def install_using_checkout(options = {})$/;" f class:Plugin
+install_using_export lib/rails/commands/plugin.rb /^ def install_using_export(options = {})$/;" f class:Plugin
+install_using_externals lib/rails/commands/plugin.rb /^ def install_using_externals(options = {})$/;" f class:Plugin
+install_using_git lib/rails/commands/plugin.rb /^ def install_using_git(options = {})$/;" f
+install_using_http lib/rails/commands/plugin.rb /^ def install_using_http(options = {})$/;" f class:Plugin
+installed? lib/rails/commands/plugin.rb /^ def installed?$/;" f class:Plugin
+instance lib/rails/railtie/configurable.rb /^ def instance$/;" f class:Rails.Railtie.Configurable.ClassMethods
+instrument test/application/initializers/notifications_test.rb /^ def instrument(*args, &block)$/;" f class:ApplicationTests.NotificationsTest
+integration_generator.rb lib/rails/generators/test_unit/integration/integration_generator.rb 1;" F
+integration_test.rb lib/rails/generators/test_unit/integration/templates/integration_test.rb 1;" F
+integration_test_generator.rb lib/rails/generators/rails/integration_test/integration_test_generator.rb 1;" F
+integration_test_generator_test.rb test/generators/integration_test_generator_test.rb 1;" F
+invoke lib/rails/generators.rb /^ def self.invoke(namespace, args=ARGV, config={})$/;" F class:Rails.Generators
+invoke_fallbacks_for lib/rails/generators.rb /^ def self.invoke_fallbacks_for(name, base) #:nodoc:$/;" F class:Rails
+isArray lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isArray(object) {$/;" f
+isArray tmp/app/public/javascripts/prototype.js /^ function isArray(object) {$/;" f
+isArray tmp/app_template/public/javascripts/prototype.js /^ function isArray(object) {$/;" f
+isDate lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isDate(object) {$/;" f
+isDate tmp/app/public/javascripts/prototype.js /^ function isDate(object) {$/;" f
+isDate tmp/app_template/public/javascripts/prototype.js /^ function isDate(object) {$/;" f
+isElement lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isElement(object) {$/;" f
+isElement tmp/app/public/javascripts/prototype.js /^ function isElement(object) {$/;" f
+isElement tmp/app_template/public/javascripts/prototype.js /^ function isElement(object) {$/;" f
+isForm lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function isForm(element) {$/;" f
+isForm tmp/app/public/javascripts/rails.js /^ function isForm(element) {$/;" f
+isForm tmp/app_template/public/javascripts/rails.js /^ function isForm(element) {$/;" f
+isFunction lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isFunction(object) {$/;" f
+isFunction tmp/app/public/javascripts/prototype.js /^ function isFunction(object) {$/;" f
+isFunction tmp/app_template/public/javascripts/prototype.js /^ function isFunction(object) {$/;" f
+isHash lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isHash(object) {$/;" f
+isHash tmp/app/public/javascripts/prototype.js /^ function isHash(object) {$/;" f
+isHash tmp/app_template/public/javascripts/prototype.js /^ function isHash(object) {$/;" f
+isInput lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ function isInput(element) {$/;" f
+isInput tmp/app/public/javascripts/rails.js /^ function isInput(element) {$/;" f
+isInput tmp/app_template/public/javascripts/rails.js /^ function isInput(element) {$/;" f
+isNumber lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isNumber(object) {$/;" f
+isNumber tmp/app/public/javascripts/prototype.js /^ function isNumber(object) {$/;" f
+isNumber tmp/app_template/public/javascripts/prototype.js /^ function isNumber(object) {$/;" f
+isString lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isString(object) {$/;" f
+isString tmp/app/public/javascripts/prototype.js /^ function isString(object) {$/;" f
+isString tmp/app_template/public/javascripts/prototype.js /^ function isString(object) {$/;" f
+isUndefined lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function isUndefined(object) {$/;" f
+isUndefined tmp/app/public/javascripts/prototype.js /^ function isUndefined(object) {$/;" f
+isUndefined tmp/app_template/public/javascripts/prototype.js /^ function isUndefined(object) {$/;" f
+isolate_namespace lib/rails/engine.rb /^ def isolate_namespace(mod)$/;" f class:Rails.Engine
+javascripts lib/rails/generators/rails/app/app_generator.rb /^ def javascripts$/;" f
+javascripts lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def javascripts$/;" f class:Rails.PluginBuilder
+jquery.js lib/rails/generators/rails/app/templates/public/javascripts/jquery.js 1;" F
+jquery_ujs.js lib/rails/generators/rails/app/templates/public/javascripts/jquery_ujs.js 1;" F
+keys lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function keys(object) {$/;" f
+keys tmp/app/public/javascripts/prototype.js /^ function keys(object) {$/;" f
+keys tmp/app_template/public/javascripts/prototype.js /^ function keys(object) {$/;" f
+last lib/rails/paths.rb /^ def last$/;" f class:Rails.Paths.Path
+levenshtein.rb guides/rails_guides/levenshtein.rb 1;" F
+lib lib/rails/generators/actions.rb /^ def lib(filename, data=nil, &block)$/;" f class:Rails.Generators
+lib lib/rails/generators/rails/app/app_generator.rb /^ def lib$/;" f class:Rails
+lib lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def lib$/;" f class:Rails.PluginBuilder
+license lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def license$/;" f class:Rails.PluginBuilder
+links lib/rails/commands/plugin.rb /^ def links(base_url, contents)$/;" f class:RecursiveHTTPFetcher.ls
+load_app test/application/initializers/i18n_test.rb /^ def load_app$/;" f class:ApplicationTests.I18nTest
+load_console lib/rails/application.rb /^ def load_console(sandbox=false)$/;" f class:Rails
+load_console lib/rails/railtie.rb /^ def load_console$/;" f class:Rails
+load_environment test/application/console_test.rb /^ def load_environment$/;" f class:ConsoleTest
+load_generators lib/rails/application.rb /^ def load_generators$/;" f class:Rails
+load_generators lib/rails/railtie.rb /^ def load_generators$/;" f class:Rails
+load_generators_from_railties lib/rails/generators.rb /^ def self.load_generators_from_railties! #:nodoc:$/;" F
+load_path_test.rb test/application/initializers/load_path_test.rb 1;" F
+load_paths lib/rails/application/routes_reloader.rb /^ def load_paths$/;" f class:Rails.Application.RoutesReloader
+load_paths lib/rails/paths.rb /^ def load_paths$/;" f class:Rails.Paths.Root
+load_seed lib/rails/engine.rb /^ def load_seed$/;" f
+load_tasks lib/rails/application.rb /^ def load_tasks$/;" f class:Rails
+load_tasks lib/rails/engine.rb /^ def load_tasks$/;" f class:Rails
+load_tasks lib/rails/railtie.rb /^ def load_tasks$/;" f class:Rails
+loading_test.rb test/application/loading_test.rb 1;" F
+log lib/rails/generators/actions.rb /^ def log(*args)$/;" f class:Rails.Generators.route
+log lib/rails/generators/rails/app/app_generator.rb /^ def log$/;" f class:Rails
+log_level lib/rails/application/configuration.rb /^ def log_level$/;" f class:Rails.Application.Configuration
+log_path lib/rails/commands/server.rb /^ def log_path$/;" f class:Rails.Server
+log_tailer.rb lib/rails/rack/log_tailer.rb 1;" F
+logger lib/rails.rb /^ def logger$/;" f class:Rails
+logger.rb lib/rails/rack/logger.rb 1;" F
+logger= lib/rails.rb /^ def logger=(logger)$/;" f class:Rails
+lookup lib/rails/generators.rb /^ def self.lookup! #:nodoc:$/;" F
+lookup lib/rails/generators.rb /^ def self.lookup(namespaces) #:nodoc:$/;" F class:Rails
+ls lib/rails/commands/plugin.rb /^ def ls$/;" f class:RecursiveHTTPFetcher
+mailer_generator.rb lib/rails/generators/erb/mailer/mailer_generator.rb 1;" F
+mailer_generator.rb lib/rails/generators/test_unit/mailer/mailer_generator.rb 1;" F
+mailer_generator_test.rb test/generators/mailer_generator_test.rb 1;" F
+make_basic_app test/isolation/abstract_unit.rb /^ def make_basic_app$/;" f
+masterDelay lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^ var masterDelay = options.delay;$/;" v
+masterDelay tmp/app/public/javascripts/effects.js /^ var masterDelay = options.delay;$/;" v
+masterDelay tmp/app_template/public/javascripts/effects.js /^ var masterDelay = options.delay;$/;" v
+merge_into lib/rails/configuration.rb /^ def merge_into(other)$/;" f class:Rails.Configuration.MiddlewareStackProxy
+method_missing lib/rails/configuration.rb /^ def method_missing(method, *args)$/;" f class:Rails.Configuration.Generators
+method_missing lib/rails/generators/rails/app/app_generator.rb /^ def method_missing(meth, *args, &block)$/;" f class:Rails.ActionMethods
+method_missing lib/rails/paths.rb /^ def method_missing(id, *args)$/;" f class:Rails.Paths.PathParent
+method_missing lib/rails/railtie/configurable.rb /^ def method_missing(*args, &block)$/;" f class:Rails.Railtie.Configurable.ClassMethods
+method_missing lib/rails/railtie/configuration.rb /^ def method_missing(name, *args, &blk)$/;" f class:Rails.Railtie.Configuration
+middleware lib/rails/commands/server.rb /^ def middleware$/;" f class:Rails.Server
+middleware lib/rails/engine/configuration.rb /^ def middleware$/;" f class:Rails.Engine.Configuration
+middleware test/application/middleware_test.rb /^ def middleware$/;" f
+middleware_test.rb test/application/middleware_test.rb 1;" F
+migration.rb lib/rails/generators/migration.rb 1;" F
+migration_exists? lib/rails/generators/migration.rb /^ def migration_exists?(dirname, file_name) #:nodoc:$/;" f class:Rails.Generators.Migration.ClassMethods
+migration_file_name lib/rails/generators/test_case.rb /^ def migration_file_name(relative) #:nodoc:$/;" f class:Rails.Generators.TestCase
+migration_generator.rb lib/rails/generators/rails/migration/migration_generator.rb 1;" F
+migration_generator_test.rb test/generators/migration_generator_test.rb 1;" F
+migration_lookup_at lib/rails/generators/migration.rb /^ def migration_lookup_at(dirname) #:nodoc:$/;" f class:Rails.Generators.Migration.ClassMethods
+migration_template lib/rails/generators/migration.rb /^ def migration_template(source, destination=nil, config={})$/;" f class:Rails.Generators.Migration.ClassMethods
+mime_types.rb lib/rails/generators/rails/app/templates/config/initializers/mime_types.rb 1;" F
+mime_types.rb tmp/app_template/config/initializers/mime_types.rb 1;" F
+model_generator.rb lib/rails/generators/rails/model/model_generator.rb 1;" F
+model_generator.rb lib/rails/generators/test_unit/model/model_generator.rb 1;" F
+model_generator.rb test/fixtures/lib/generators/model_generator.rb 1;" F
+model_generator_test.rb test/generators/model_generator_test.rb 1;" F
+module_namespacing lib/rails/generators/named_base.rb /^ def module_namespacing(&block)$/;" f class:Rails.Generators.NamedBase
+mountable? lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def mountable?$/;" f class:Generators.PluginNewGenerator
+mounted_engine_test.rb test/railties/mounted_engine_test.rb 1;" F
+mute lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def mute(&block)$/;" f class:Generators.PluginNewGenerator
+mysql_socket lib/rails/generators/rails/app/app_generator.rb /^ def mysql_socket$/;" f class:Generators.AppGenerator
+name lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var name = encodeURIComponent($/;" v
+name lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def name$/;" f class:Generators.PluginNewGenerator
+name tmp/app/public/javascripts/dragdrop.js /^ var name = encodeURIComponent($/;" v
+name tmp/app_template/public/javascripts/dragdrop.js /^ var name = encodeURIComponent($/;" v
+named_base.rb lib/rails/generators/named_base.rb 1;" F
+named_base_test.rb test/generators/named_base_test.rb 1;" F
+names lib/rails/info.rb /^ def names$/;" f class:Rails.Info
+namespace lib/rails/generators/base.rb /^ def self.namespace(name=nil)$/;" F class:Rails.Generators
+namespace lib/rails/generators/named_base.rb /^ def namespace$/;" f class:Rails.Generators.NamedBase
+namespaced? lib/rails/generators/named_base.rb /^ def namespaced?$/;" f class:Rails.Generators
+namespaced_class_path lib/rails/generators/named_base.rb /^ def namespaced_class_path$/;" f class:Rails.Generators
+namespaced_generators_test.rb test/generators/namespaced_generators_test.rb 1;" F
+namespaces_to_paths lib/rails/generators.rb /^ def self.namespaces_to_paths(namespaces) #:nodoc:$/;" F
+navigation_test.rb lib/rails/generators/rails/plugin_new/templates/test/integration/navigation_test.rb 1;" F
+new lib/rails/generators/rails/scaffold_controller/templates/controller.rb /^ def new$/;" f
+new test/railties/engine_test.rb /^ def new$/;" f class:Bukkits
+new_app test/application/configuration_test.rb /^ def new_app$/;" f class:ApplicationTests.ConfigurationTest
+new_record? test/railties/mounted_engine_test.rb /^ def new_record?$/;" f class:ApplicationTests.ApplicationRoutingTest.Blog.Post
+new_session lib/rails/console/app.rb /^def new_session$/;" f
+next_migration_number lib/rails/generators/migration.rb /^ def next_migration_number(dirname) #:nodoc:$/;" f class:Rails.Generators.Migration.ClassMethods.current_migration_number
+no_color lib/rails/generators.rb /^ def self.no_color!$/;" F class:Rails.Generators
+not_included_helper test/application/initializers/frameworks_test.rb /^ def not_included_helper$/;" f class:FooController
+notestuff guides/rails_guides/textile_extensions.rb /^ def notestuff(body)$/;" f class:RailsGuides.TextileExtensions
+notifications_test.rb test/application/initializers/notifications_test.rb 1;" F
+notify test/application/initializers/frameworks_test.rb /^ def notify$/;" f class:Foo
+observer_generator.rb lib/rails/generators/rails/observer/observer_generator.rb 1;" F
+observer_generator.rb lib/rails/generators/test_unit/observer/observer_generator.rb 1;" F
+observer_generator_test.rb test/generators/observer_generator_test.rb 1;" F
+offsets lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var offsets = dropon.cumulativeOffset();$/;" v
+offsets tmp/app/public/javascripts/dragdrop.js /^ var offsets = dropon.cumulativeOffset();$/;" v
+offsets tmp/app_template/public/javascripts/dragdrop.js /^ var offsets = dropon.cumulativeOffset();$/;" v
+opt_parser lib/rails/commands/server.rb /^ def opt_parser$/;" f class:Rails.Server
+options lib/rails/commands/plugin.rb /^ def options$/;" f class:Commands.Info
+options lib/rails/commands/plugin.rb /^ def options$/;" f class:Commands.Install
+options lib/rails/commands/plugin.rb /^ def options$/;" f class:Commands.Plugin
+options lib/rails/commands/plugin.rb /^ def options$/;" f class:Commands.Remove
+options lib/rails/generators.rb /^ def self.options #:nodoc:$/;" F class:Rails.Generators
+options_for_draggable.quiet lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ revert: true,$/;" p
+options_for_draggable.quiet tmp/app/public/javascripts/dragdrop.js /^ revert: true,$/;" p
+options_for_draggable.quiet tmp/app_template/public/javascripts/dragdrop.js /^ revert: true,$/;" p
+options_for_draggable.revert lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var options_for_draggable = {$/;" p
+options_for_draggable.revert tmp/app/public/javascripts/dragdrop.js /^ var options_for_draggable = {$/;" p
+options_for_draggable.revert tmp/app_template/public/javascripts/dragdrop.js /^ var options_for_draggable = {$/;" p
+options_for_droppable.overlap lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var options_for_droppable = {$/;" p
+options_for_droppable.overlap tmp/app/public/javascripts/dragdrop.js /^ var options_for_droppable = {$/;" p
+options_for_droppable.overlap tmp/app_template/public/javascripts/dragdrop.js /^ var options_for_droppable = {$/;" p
+options_for_tree.onHover lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var options_for_tree = {$/;" p
+options_for_tree.onHover tmp/app/public/javascripts/dragdrop.js /^ var options_for_tree = {$/;" p
+options_for_tree.onHover tmp/app_template/public/javascripts/dragdrop.js /^ var options_for_tree = {$/;" p
+orm_class lib/rails/generators/resource_helpers.rb /^ def orm_class$/;" f class:Rails.Generators.ResourceHelpers
+orm_instance lib/rails/generators/resource_helpers.rb /^ def orm_instance(name=singular_table_name)$/;" f class:Rails.Generators.ResourceHelpers
+output_file_for guides/rails_guides/generator.rb /^ def output_file_for(guide)$/;" f class:RailsGuides.Generator
+parse lib/rails/commands/plugin.rb /^ def self.parse!(args=ARGV)$/;" F class:Commands.Plugin
+parse! lib/rails/commands/plugin.rb /^ def parse!(args)$/;" f class:Commands.Info
+parse! lib/rails/commands/plugin.rb /^ def parse!(args)$/;" f class:Commands.Install
+parse! lib/rails/commands/plugin.rb /^ def parse!(args)$/;" f class:Commands.Remove
+parse! lib/rails/commands/plugin.rb /^ def parse!(args=ARGV)$/;" f class:Commands.Plugin
+parse! lib/rails/commands/server.rb /^ def parse!(args)$/;" f class:Rails.Server.Options
+parse_attributes! lib/rails/generators/named_base.rb /^ def parse_attributes! #:nodoc:$/;" f class:Rails.Generators
+partial lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ var partial = [];$/;" v
+partial tmp/app/public/javascripts/prototype.js /^ var partial = [];$/;" v
+partial tmp/app_template/public/javascripts/prototype.js /^ var partial = [];$/;" v
+paths lib/rails/application/configuration.rb /^ def paths$/;" f class:Rails.Application.Configuration
+paths lib/rails/engine/configuration.rb /^ def paths$/;" f class:Rails.Engine.Configuration
+paths lib/rails/paths.rb /^ def paths$/;" f class:Rails
+paths.rb lib/rails/paths.rb 1;" F
+paths_test.rb test/application/paths_test.rb 1;" F
+paths_test.rb test/paths_test.rb 1;" F
+performance_generator.rb lib/rails/generators/test_unit/performance/performance_generator.rb 1;" F
+performance_test.rb lib/rails/generators/test_unit/performance/templates/performance_test.rb 1;" F
+performance_test_generator.rb lib/rails/generators/rails/performance_test/performance_test_generator.rb 1;" F
+performance_test_generator_test.rb test/generators/performance_test_generator_test.rb 1;" F
+performance_test_help.rb lib/rails/performance_test_help.rb 1;" F
+persisted? test/railties/engine_test.rb /^ def persisted?$/;" f class:Bukkits.Post
+plugin lib/rails/generators/actions.rb /^ def plugin(name, options)$/;" f class:Rails.Generators.Actions
+plugin test/isolation/abstract_unit.rb /^ def plugin(name, string = "")$/;" f
+plugin.rb lib/rails/commands/plugin.rb 1;" F
+plugin.rb lib/rails/plugin.rb 1;" F
+plugin_dir lib/rails/generators/rails/plugin/plugin_generator.rb /^ def plugin_dir(join=nil)$/;" f class:Rails.Generators.PluginGenerator
+plugin_generator.rb lib/rails/generators/rails/plugin/plugin_generator.rb 1;" F
+plugin_generator.rb lib/rails/generators/test_unit/plugin/plugin_generator.rb 1;" F
+plugin_generator_test.rb test/generators/plugin_generator_test.rb 1;" F
+plugin_new.rb lib/rails/commands/plugin_new.rb 1;" F
+plugin_new_generator.rb lib/rails/generators/rails/plugin_new/plugin_new_generator.rb 1;" F
+plugin_new_generator_test.rb test/generators/plugin_new_generator_test.rb 1;" F
+plugin_ordering_test.rb test/railties/plugin_ordering_test.rb 1;" F
+plugin_test.rb test/railties/plugin_test.rb 1;" F
+plugins lib/rails/engine/railties.rb /^ def plugins$/;" f class:Rails.Engine.Railties
+plural_file_name lib/rails/generators/named_base.rb /^ def plural_file_name$/;" f class:Rails.Generators
+plural_name lib/rails/generators/named_base.rb /^ def plural_name$/;" f class:Rails.Generators
+plural_table_name lib/rails/generators/named_base.rb /^ def plural_table_name$/;" f class:Rails.Generators
+pluralize_table_names? lib/rails/generators/named_base.rb /^ def pluralize_table_names?$/;" f class:Rails.Generators
+plusplus guides/rails_guides/textile_extensions.rb /^ def plusplus(body)$/;" f class:RailsGuides.TextileExtensions
+pointer lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var pointer = [Event.pointerX(event), Event.pointerY(event)];$/;" v
+pointer tmp/app/public/javascripts/dragdrop.js /^ var pointer = [Event.pointerX(event), Event.pointerY(event)];$/;" v
+pointer tmp/app_template/public/javascripts/dragdrop.js /^ var pointer = [Event.pointerX(event), Event.pointerY(event)];$/;" v
+polymorphic_path_without_namespace test/railties/engine_test.rb /^ def polymorphic_path_without_namespace$/;" f class:Bukkits
+polymorphic_route test/railties/mounted_engine_test.rb /^ def polymorphic_route$/;" f class:ApplicationTests.ApplicationRoutingTest.ApplicationGeneratingController
+pop_d lib/rails/commands/plugin.rb /^ def pop_d$/;" f class:RecursiveHTTPFetcher.ls
+prepare_destination lib/rails/generators/test_case.rb /^ def prepare_destination$/;" f class:Rails.Generators.TestCase
+prepare_for_invocation lib/rails/generators/base.rb /^ def self.prepare_for_invocation(name, value) #:nodoc:$/;" F class:Rails
+print_code_test_stats lib/rails/code_statistics.rb /^ def print_code_test_stats$/;" f
+print_header lib/rails/code_statistics.rb /^ def print_header$/;" f class:CodeStatistics
+print_line lib/rails/code_statistics.rb /^ def print_line(name, statistics)$/;" f class:CodeStatistics
+print_list lib/rails/generators.rb /^ def self.print_list(base, namespaces) #:nodoc:$/;" F class:Rails
+print_profile lib/rails/rubyprof_ext.rb /^ def self.print_profile(results, io = $stderr)$/;" F class:Prof
+print_splitter lib/rails/code_statistics.rb /^ def print_splitter$/;" f class:CodeStatistics
+process guides/rails_guides/indexer.rb /^ def process(string, current_level=3, counters=[1])$/;" f class:RailsGuides.Indexer
+production.rb tmp/app_template/config/environments/production.rb 1;" F
+profiler.rb lib/rails/commands/profiler.rb 1;" F
+properties lib/rails/info_controller.rb /^ def properties$/;" f class:Rails
+properties test/rails_info_test.rb /^ def properties$/;" f
+property lib/rails/info.rb /^ def property(name, value = nil)$/;" f class:Rails
+property_defined? test/rails_info_test.rb /^ def property_defined?(property_name)$/;" f
+prototype.js lib/rails/generators/rails/app/templates/public/javascripts/prototype.js 1;" F
+prototype.js tmp/app/public/javascripts/prototype.js 1;" F
+prototype.js tmp/app_template/public/javascripts/prototype.js 1;" F
+prototype_ujs.js lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js 1;" F
+public_directory lib/rails/generators/rails/app/app_generator.rb /^ def public_directory$/;" f
+public_path lib/rails.rb /^ def public_path$/;" f class:Rails
+push_d lib/rails/commands/plugin.rb /^ def push_d(dir)$/;" f class:RecursiveHTTPFetcher.ls
+rack.rb lib/rails/rack.rb 1;" F
+rackup test/application/rackup_test.rb /^ def rackup$/;" f class:ApplicationTests.RackupTest
+rackup_test.rb test/application/rackup_test.rb 1;" F
+rails tmp/app_template/script/rails 1;" F
+rails.js tmp/app/public/javascripts/rails.js 1;" F
+rails.js tmp/app_template/public/javascripts/rails.js 1;" F
+rails.rb lib/rails.rb 1;" F
+rails_env lib/rails/commands/plugin.rb /^ def rails_env$/;" f
+rails_gemfile_entry lib/rails/generators/app_base.rb /^ def rails_gemfile_entry$/;" f class:Rails.Generators
+rails_guides.rb guides/rails_guides.rb 1;" F
+rails_info_controller_test.rb test/rails_info_controller_test.rb 1;" F
+rails_info_test.rb test/rails_info_test.rb 1;" F
+rails_root test/isolation/abstract_unit.rb /^ def rails_root$/;" f class:TestHelpers.Paths
+railtie.rb lib/rails/railtie.rb 1;" F
+railtie.rb lib/rails/test_unit/railtie.rb 1;" F
+railtie_name lib/rails/plugin.rb /^ def railtie_name$/;" f class:Rails
+railtie_name lib/rails/railtie.rb /^ def railtie_name(name = nil)$/;" f class:Rails.Railtie
+railtie_test.rb test/railties/railtie_test.rb 1;" F
+railties lib/rails/engine.rb /^ def railties$/;" f
+railties lib/rails/engine/railties.rb /^ def self.railties$/;" F class:Rails.Engine.Railties
+railties.rb lib/rails/application/railties.rb 1;" F
+railties.rb lib/rails/engine/railties.rb 1;" F
+rake lib/rails/generators/actions.rb /^ def rake(command, options={})$/;" f class:Rails.Generators
+rake_tasks lib/rails/railtie.rb /^ def rake_tasks(&blk)$/;" f class:Rails.Railtie
+rake_test.rb test/application/rake_test.rb 1;" F
+rakefile lib/rails/generators/actions.rb /^ def rakefile(filename, data=nil, &block)$/;" f class:Rails.Generators
+rakefile lib/rails/generators/rails/app/app_generator.rb /^ def rakefile$/;" f class:Rails.AppBuilder
+rakefile lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def rakefile$/;" f class:Rails.PluginBuilder
+rakefile_test_tasks lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def rakefile_test_tasks$/;" f class:Generators.PluginNewGenerator
+readme lib/rails/generators/actions.rb /^ def readme(path)$/;" f class:Rails.Generators.route
+readme lib/rails/generators/rails/app/app_generator.rb /^ def readme$/;" f class:Rails.AppBuilder
+readme lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def readme$/;" f class:Rails.PluginBuilder
+reference? lib/rails/generators/generated_attribute.rb /^ def reference?$/;" f class:Rails
+regular_class_path lib/rails/generators/named_base.rb /^ def regular_class_path$/;" f class:Rails.Generators
+reload! lib/rails/application/routes_reloader.rb /^ def reload!$/;" f class:Rails.Application.RoutesReloader
+reload! lib/rails/console/app.rb /^def reload!(print=true)$/;" f
+reload_routes! lib/rails/application.rb /^ def reload_routes!$/;" f class:Rails
+remote_ip test/application/middleware/remote_ip_test.rb /^ def remote_ip(env = {})$/;" f class:ApplicationTests.RemoteIpTest
+remote_ip_test.rb test/application/middleware/remote_ip_test.rb 1;" F
+remove_hook_for lib/rails/generators/base.rb /^ def self.remove_hook_for(*names)$/;" F class:Rails
+render_conditionally test/application/middleware/cache_test.rb /^ def render_conditionally(headers)$/;" f class:ApplicationTests.RoutingTest.simple_controller.ExpiresController
+require_environment! lib/rails/application.rb /^ def require_environment! #:nodoc:$/;" f class:Rails
+require_for_database lib/rails/generators/app_base.rb /^ def require_for_database$/;" f class:Rails.Generators
+reset_script_name! test/railties/mounted_engine_test.rb /^ def reset_script_name!$/;" f class:ApplicationTests
+resource_generator.rb lib/rails/generators/rails/resource/resource_generator.rb 1;" F
+resource_generator_test.rb test/generators/resource_generator_test.rb 1;" F
+resource_helpers.rb lib/rails/generators/resource_helpers.rb 1;" F
+respond_to? lib/rails/railtie/configurable.rb /^ def respond_to?(*args)$/;" f class:Rails.Railtie.Configurable.ClassMethods
+respond_to? lib/rails/railtie/configuration.rb /^ def respond_to?(name)$/;" f class:Rails.Railtie.Configuration
+revert lib/rails/application/routes_reloader.rb /^ def revert$/;" f class:Rails.Application.RoutesReloader
+root lib/rails.rb /^ def root$/;" f class:Rails
+root test/application/paths_test.rb /^ def root(*path)$/;" f class:ApplicationTests.PathsTest
+root test/generators/generators_test_helper.rb /^ def self.root$/;" F class:Rails
+root.children lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ parent: null,$/;" p
+root.children tmp/app/public/javascripts/dragdrop.js /^ parent: null,$/;" p
+root.children tmp/app_template/public/javascripts/dragdrop.js /^ parent: null,$/;" p
+root.id lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var root = {$/;" p
+root.id tmp/app/public/javascripts/dragdrop.js /^ var root = {$/;" p
+root.id tmp/app_template/public/javascripts/dragdrop.js /^ var root = {$/;" p
+root.parent lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ id: null,$/;" p
+root.parent tmp/app/public/javascripts/dragdrop.js /^ id: null,$/;" p
+root.parent tmp/app_template/public/javascripts/dragdrop.js /^ id: null,$/;" p
+root= lib/rails/engine/configuration.rb /^ def root=(value)$/;" f class:Rails.Engine.Configuration
+route lib/rails/generators/actions.rb /^ def route(routing_code)$/;" f class:Rails.Generators
+route_url lib/rails/generators/named_base.rb /^ def route_url$/;" f class:Rails.Generators
+routes lib/rails/engine.rb /^ def routes$/;" f
+routes.rb lib/rails/generators/rails/app/templates/config/routes.rb 1;" F
+routes.rb lib/rails/generators/rails/plugin_new/templates/config/routes.rb 1;" F
+routes.rb lib/rails/generators/rails/plugin_new/templates/rails/routes.rb 1;" F
+routes.rb tmp/app/config/routes.rb 1;" F
+routes.rb tmp/app_template/config/routes.rb 1;" F
+routes? lib/rails/engine.rb /^ def routes?$/;" f
+routes_helpers_in_view test/railties/engine_test.rb /^ def routes_helpers_in_view$/;" f class:Bukkits
+routes_reloader lib/rails/application.rb /^ def routes_reloader$/;" f class:Rails
+routes_reloader.rb lib/rails/application/routes_reloader.rb 1;" F
+routing_test.rb test/application/routing_test.rb 1;" F
+ruby test/application/test_test.rb /^ def ruby(*args)$/;" f
+ruby_version_check.rb lib/rails/ruby_version_check.rb 1;" F
+rubyprof_ext.rb lib/rails/rubyprof_ext.rb 1;" F
+run lib/rails/initializable.rb /^ def run(*args)$/;" f class:Rails.Initializable.Initializer
+run_generator lib/rails/generators/test_case.rb /^ def run_generator(args=self.default_arguments, config={})$/;" f class:Rails.Generators.TestCase
+run_initializers lib/rails/initializable.rb /^ def run_initializers(*args)$/;" f class:Rails.Initializable
+run_install_hook lib/rails/commands/plugin.rb /^ def run_install_hook$/;" f class:Plugin
+run_test test/application/test_test.rb /^ def run_test(name)$/;" f
+run_uninstall_hook lib/rails/commands/plugin.rb /^ def run_uninstall_hook$/;" f class:Plugin
+runner.rb lib/rails/commands/runner.rb 1;" F
+runner_test.rb test/application/runner_test.rb 1;" F
+s lib/rails/generators/rails/app/templates/public/javascripts/dragdrop.js /^ var s = Sortable.sortables[element.id];$/;" v
+s tmp/app/public/javascripts/dragdrop.js /^ var s = Sortable.sortables[element.id];$/;" v
+s tmp/app_template/public/javascripts/dragdrop.js /^ var s = Sortable.sortables[element.id];$/;" v
+sandbox.rb lib/rails/console/sandbox.rb 1;" F
+save lib/rails/generators/active_model.rb /^ def save$/;" f class:Rails.Generators.ActiveModel
+scaffold_controller_generator.rb lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb 1;" F
+scaffold_controller_generator_test.rb test/generators/scaffold_controller_generator_test.rb 1;" F
+scaffold_generator.rb lib/rails/generators/erb/scaffold/scaffold_generator.rb 1;" F
+scaffold_generator.rb lib/rails/generators/rails/scaffold/scaffold_generator.rb 1;" F
+scaffold_generator.rb lib/rails/generators/test_unit/scaffold/scaffold_generator.rb 1;" F
+scaffold_generator_test.rb test/generators/scaffold_generator_test.rb 1;" F
+script lib/rails/generators/rails/app/app_generator.rb /^ def script$/;" f
+script lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def script(force = false)$/;" f class:Rails.PluginBuilder
+script test/isolation/abstract_unit.rb /^ def script(script)$/;" f
+script_name test/railties/mounted_engine_test.rb /^ def script_name(script_name)$/;" f class:ApplicationTests
+script_rails_loader.rb lib/rails/script_rails_loader.rb 1;" F
+script_rails_loader_test.rb test/script_rails_loader_test.rb 1;" F
+secret_token.rb tmp/app_template/config/initializers/secret_token.rb 1;" F
+seeds.rb lib/rails/generators/rails/app/templates/db/seeds.rb 1;" F
+seeds.rb tmp/app/db/seeds.rb 1;" F
+seeds.rb tmp/app_template/db/seeds.rb 1;" F
+select_only guides/rails_guides/generator.rb /^ def select_only(guides)$/;" f class:RailsGuides.Generator
+select_only guides/w3c_validator.rb /^ def select_only(guides)$/;" f class:RailsGuides.Validator
+sendfile_test.rb test/application/middleware/sendfile_test.rb 1;" F
+server.rb lib/rails/commands/server.rb 1;" F
+session_migration_generator.rb lib/rails/generators/rails/session_migration/session_migration_generator.rb 1;" F
+session_migration_generator_test.rb test/generators/session_migration_generator_test.rb 1;" F
+session_store lib/rails/application/configuration.rb /^ def session_store(*args)$/;" f class:Rails.Application.Configuration
+session_store.rb tmp/app_template/config/initializers/session_store.rb 1;" F
+set_default_accessors! lib/rails/generators/app_base.rb /^ def set_default_accessors!$/;" f class:Rails.Generators.AppBase
+set_environment lib/rails/commands/server.rb /^ def set_environment$/;" f class:Rails.Server
+set_flags_from_environment guides/rails_guides/generator.rb /^ def set_flags_from_environment$/;" f class:RailsGuides.Generator
+set_header_section guides/rails_guides/generator.rb /^ def set_header_section(body, view)$/;" f class:RailsGuides.Generator
+set_index guides/rails_guides/generator.rb /^ def set_index(body, view)$/;" f class:RailsGuides.Generator
+setup test/application/configuration_test.rb /^ def setup$/;" f class:ApplicationTests.ConfigurationTest
+setup test/application/console_test.rb /^ def setup$/;" f class:ConsoleTest
+setup test/application/generators_test.rb /^ def setup$/;" f class:ApplicationTests.GeneratorsTest
+setup test/application/initializers/boot_test.rb /^ def setup$/;" f class:ApplicationTests.GemBooting
+setup test/application/initializers/check_ruby_version_test.rb /^ def setup$/;" f class:ApplicationTests.CheckRubyVersionTest
+setup test/application/initializers/frameworks_test.rb /^ def setup$/;" f class:ApplicationTests.FrameworlsTest
+setup test/application/initializers/hooks_test.rb /^ def setup$/;" f class:ApplicationTests.InitializersTest
+setup test/application/initializers/i18n_test.rb /^ def setup$/;" f class:ApplicationTests.I18nTest
+setup test/application/initializers/load_path_test.rb /^ def setup$/;" f class:ApplicationTests.LoadPathTest
+setup test/application/initializers/notifications_test.rb /^ def setup$/;" f class:ApplicationTests.NotificationsTest
+setup test/application/loading_test.rb /^ def setup$/;" f class:LoadingTest
+setup test/application/middleware/best_practices_test.rb /^ def setup$/;" f class:ApplicationTests.BestPracticesTest
+setup test/application/middleware/cache_test.rb /^ def setup$/;" f class:ApplicationTests.RoutingTest
+setup test/application/middleware/remote_ip_test.rb /^ def setup$/;" f class:ApplicationTests.RemoteIpTest
+setup test/application/middleware/sendfile_test.rb /^ def setup$/;" f class:ApplicationTests.SendfileTest
+setup test/application/middleware_test.rb /^ def setup$/;" f class:ApplicationTests.MiddlewareTest
+setup test/application/paths_test.rb /^ def setup$/;" f class:ApplicationTests.PathsTest
+setup test/application/rackup_test.rb /^ def setup$/;" f class:ApplicationTests.RackupTest
+setup test/application/rake_test.rb /^ def setup$/;" f class:ApplicationTests.RakeTest
+setup test/application/routing_test.rb /^ def setup$/;" f class:ApplicationTests.RoutingTest
+setup test/application/runner_test.rb /^ def setup$/;" f class:ApplicationTests.RunnerTest
+setup test/application/test_test.rb /^ def setup$/;" f class:ApplicationTests.TestTest
+setup test/backtrace_cleaner_test.rb /^ def setup$/;" f class:BacktraceCleanerFilterTest
+setup test/backtrace_cleaner_test.rb /^ def setup$/;" f class:BacktraceCleanerVendorGemTest
+setup test/generators/actions_test.rb /^ def setup$/;" f class:ActionsTest
+setup test/generators/namespaced_generators_test.rb /^ def setup$/;" f class:NamespacedGeneratorTestCase
+setup test/generators/shared_generator_tests.rb /^ def setup$/;" f class:SharedCustomGeneratorTests
+setup test/generators/shared_generator_tests.rb /^ def setup$/;" f class:SharedGeneratorTests
+setup test/generators_test.rb /^ def setup$/;" f class:GeneratorsTest
+setup test/paths_test.rb /^ def setup$/;" f class:PathsTest
+setup test/rails_info_controller_test.rb /^ def setup$/;" f class:InfoControllerTest
+setup test/rails_info_test.rb /^ def setup$/;" f class:InfoTest
+setup test/railties/engine_test.rb /^ def setup$/;" f class:RailtiesTest.EngineTest
+setup test/railties/mounted_engine_test.rb /^ def setup$/;" f class:ApplicationTests.ApplicationRoutingTest
+setup test/railties/plugin_ordering_test.rb /^ def setup$/;" f class:RailtiesTest.PluginOrderingTest
+setup test/railties/plugin_test.rb /^ def setup$/;" f class:RailtiesTest.PluginTest
+setup test/railties/railtie_test.rb /^ def setup$/;" f class:RailtiesTest.RailtieTest
+setup_ar! test/application/loading_test.rb /^ def setup_ar!$/;" f
+shBrushAS3.js guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js 1;" F
+shBrushAppleScript.js guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js 1;" F
+shBrushBash.js guides/assets/javascripts/syntaxhighlighter/shBrushBash.js 1;" F
+shBrushCSharp.js guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js 1;" F
+shBrushColdFusion.js guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js 1;" F
+shBrushCpp.js guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js 1;" F
+shBrushCss.js guides/assets/javascripts/syntaxhighlighter/shBrushCss.js 1;" F
+shBrushDelphi.js guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js 1;" F
+shBrushDiff.js guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js 1;" F
+shBrushErlang.js guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js 1;" F
+shBrushGroovy.js guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js 1;" F
+shBrushJScript.js guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js 1;" F
+shBrushJava.js guides/assets/javascripts/syntaxhighlighter/shBrushJava.js 1;" F
+shBrushJavaFX.js guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js 1;" F
+shBrushPerl.js guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js 1;" F
+shBrushPhp.js guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js 1;" F
+shBrushPlain.js guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js 1;" F
+shBrushPowerShell.js guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js 1;" F
+shBrushPython.js guides/assets/javascripts/syntaxhighlighter/shBrushPython.js 1;" F
+shBrushRuby.js guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js 1;" F
+shBrushSass.js guides/assets/javascripts/syntaxhighlighter/shBrushSass.js 1;" F
+shBrushScala.js guides/assets/javascripts/syntaxhighlighter/shBrushScala.js 1;" F
+shBrushSql.js guides/assets/javascripts/syntaxhighlighter/shBrushSql.js 1;" F
+shBrushVb.js guides/assets/javascripts/syntaxhighlighter/shBrushVb.js 1;" F
+shBrushXml.js guides/assets/javascripts/syntaxhighlighter/shBrushXml.js 1;" F
+shCore.js guides/assets/javascripts/syntaxhighlighter/shCore.js 1;" F
+shared_generator_tests.rb test/generators/shared_generator_tests.rb 1;" F
+shared_tests.rb test/railties/shared_tests.rb 1;" F
+show lib/rails/generators/rails/scaffold_controller/templates/controller.rb /^ def show$/;" f
+show test/railties/engine_test.rb /^ def show$/;" f class:Bukkits
+show_deprecation lib/rails/generators/rails/plugin/plugin_generator.rb /^ def show_deprecation$/;" f class:Rails.Generators.PluginGenerator
+show_results guides/w3c_validator.rb /^ def show_results(error_list)$/;" f class:RailsGuides.Validator
+simple_builder.rb test/fixtures/lib/app_builders/simple_builder.rb 1;" F
+simple_builder.rb test/fixtures/lib/plugin_builders/simple_builder.rb 1;" F
+simple_controller test/application/middleware/cache_test.rb /^ def simple_controller$/;" f class:ApplicationTests.RoutingTest
+simple_controller test/isolation/abstract_unit.rb /^ def simple_controller$/;" f
+singular_table_name lib/rails/generators/named_base.rb /^ def singular_table_name$/;" f class:Rails.Generators
+skip_ lib/rails/paths.rb /^ def skip_#{m}!$/;" f class:Rails.Paths.Path
+skip_test_unit? test/fixtures/lib/plugin_builders/spec_builder.rb /^ def skip_test_unit?$/;" f class:PluginBuilder
+something test/railties/engine_test.rb /^ def something$/;" f class:SomeHelper
+source_annotation_extractor.rb lib/rails/source_annotation_extractor.rb 1;" F
+source_root lib/rails/generators/base.rb /^ def self.source_root(path=nil)$/;" F class:Rails.Generators.Base
+spec_builder.rb test/fixtures/lib/plugin_builders/spec_builder.rb 1;" F
+split_args lib/rails/commands/plugin.rb /^ def split_args(args)$/;" f class:Commands.Plugin
+start lib/rails/commands/console.rb /^ def self.start(app)$/;" F class:Rails.Console
+start lib/rails/commands/console.rb /^ def start$/;" f class:Rails.Console
+start lib/rails/commands/dbconsole.rb /^ def self.start(app)$/;" F class:Rails.DBConsole
+start lib/rails/commands/dbconsole.rb /^ def start$/;" f class:Rails.DBConsole
+start lib/rails/commands/server.rb /^ def start$/;" f class:Rails.Server
+static.rb lib/rails/rack/static.rb 1;" F
+static_asset_paths lib/rails/railtie/configuration.rb /^ def static_asset_paths$/;" f class:Rails.Railtie.Configuration
+stringify lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function stringify(object) {$/;" f
+stringify tmp/app/public/javascripts/prototype.js /^ function stringify(object) {$/;" f
+stringify tmp/app_template/public/javascripts/prototype.js /^ function stringify(object) {$/;" f
+stylesheets lib/rails/generators/rails/app/app_generator.rb /^ def stylesheets$/;" f
+stylesheets lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def stylesheets$/;" f class:Rails.PluginBuilder
+stylesheets_generator.rb lib/rails/generators/rails/stylesheets/stylesheets_generator.rb 1;" F
+stylesheets_generator_test.rb test/generators/stylesheets_generator_test.rb 1;" F
+subclasses lib/rails/generators.rb /^ def self.subclasses$/;" F class:Rails.Generators
+subclasses lib/rails/railtie.rb /^ def subclasses$/;" f class:Rails.Railtie
+submitBubbles lib/rails/generators/rails/app/templates/public/javascripts/prototype_ujs.js /^ var submitBubbles = isEventSupported('submit'),$/;" v
+submitBubbles tmp/app/public/javascripts/rails.js /^ var submitBubbles = isEventSupported('submit'),$/;" v
+submitBubbles tmp/app_template/public/javascripts/rails.js /^ var submitBubbles = isEventSupported('submit'),$/;" v
+svn_command lib/rails/commands/plugin.rb /^ def svn_command(cmd, options = {})$/;" f
+svn_info test/rails_info_test.rb /^ def svn_info$/;" f class:InfoTest.svn_info=
+svn_info= test/rails_info_test.rb /^ def svn_info=(info)$/;" f class:InfoTest
+svn_url? lib/rails/commands/plugin.rb /^ def svn_url?$/;" f class:Plugin
+swap lib/rails/configuration.rb /^ def swap(*args, &block)$/;" f class:Rails.Configuration.MiddlewareStackProxy
+table_name lib/rails/generators/named_base.rb /^ def table_name$/;" f class:Rails.Generators
+table_name_prefix test/railties/engine_test.rb /^ def self.table_name_prefix$/;" F class:Bukkits
+tail! lib/rails/rack/log_tailer.rb /^ def tail!$/;" f class:Rails.Rack.LogTailer
+tasks.rb lib/rails/tasks.rb 1;" F
+teardown test/application/configuration_test.rb /^ def teardown$/;" f class:ApplicationTests.ConfigurationTest
+teardown test/generators/actions_test.rb /^ def teardown$/;" f class:ActionsTest
+teardown test/generators/namespaced_generators_test.rb /^ def teardown$/;" f class:NamespacedGeneratorTestCase
+teardown test/generators/shared_generator_tests.rb /^ def teardown$/;" f class:SharedCustomGeneratorTests
+teardown test/generators/shared_generator_tests.rb /^ def teardown$/;" f class:SharedGeneratorTests
+teardown test/generators_test.rb /^ def teardown$/;" f class:GeneratorsTest
+template lib/rails/generators/named_base.rb /^ def template(source, *args, &block)$/;" f class:Rails.Generators.NamedBase
+template.rb test/fixtures/lib/template.rb 1;" F
+templates_path lib/rails/generators.rb /^ def self.templates_path$/;" F class:Rails.Generators
+test lib/rails/generators/rails/app/app_generator.rb /^ def test$/;" f
+test lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def test$/;" f class:Rails.PluginBuilder
+test test/fixtures/lib/plugin_builders/spec_builder.rb /^ def test$/;" f class:PluginBuilder
+test.rb tmp/app_template/config/environments/test.rb 1;" F
+test_access_to_helpers test/application/console_test.rb /^ def test_access_to_helpers$/;" f class:ConsoleTest
+test_actions_are_turned_into_methods test/generators/controller_generator_test.rb /^ def test_actions_are_turned_into_methods$/;" f class:ControllerGeneratorTest
+test_actions_are_turned_into_methods test/generators/mailer_generator_test.rb /^ def test_actions_are_turned_into_methods$/;" f
+test_active_record_does_not_panic_when_referencing_an_observed_constant test/application/console_test.rb /^ def test_active_record_does_not_panic_when_referencing_an_observed_constant$/;" f class:ConsoleTest
+test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given test/generators/app_generator_test.rb /^ def test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given$/;" f
+test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given test/generators/plugin_new_generator_test.rb /^ def test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given$/;" f class:PluginNewGeneratorTest
+test_add_migration_with_attributes test/generators/migration_generator_test.rb /^ def test_add_migration_with_attributes$/;" f class:MigrationGeneratorTest
+test_add_routes test/generators/controller_generator_test.rb /^ def test_add_routes$/;" f class:ControllerGeneratorTest
+test_add_source_adds_source_to_gemfile test/generators/actions_test.rb /^ def test_add_source_adds_source_to_gemfile$/;" f class:ActionsTest
+test_adds_helpers_to_controller_views test/railties/shared_tests.rb /^ def test_adds_helpers_to_controller_views$/;" f class:RailtiesTest
+test_adds_its_views_to_view_paths test/railties/shared_tests.rb /^ def test_adds_its_views_to_view_paths$/;" f class:RailtiesTest
+test_adds_its_views_to_view_paths_with_lower_proriority_than_app_ones test/railties/shared_tests.rb /^ def test_adds_its_views_to_view_paths_with_lower_proriority_than_app_ones$/;" f class:RailtiesTest
+test_adds_namespace_to_model test/generators/namespaced_generators_test.rb /^ def test_adds_namespace_to_model$/;" f class:NamespacedModelGeneratorTest
+test_app_method_should_return_integration_session test/application/console_test.rb /^ def test_app_method_should_return_integration_session$/;" f class:ConsoleTest
+test_application_controller_and_layout_files test/generators/app_generator_test.rb /^ def test_application_controller_and_layout_files$/;" f class:AppGeneratorTest
+test_application_name test/generators/named_base_test.rb /^ def test_application_name$/;" f class:NamedBaseTest
+test_application_name_is_detected_if_it_exists_and_app_folder_renamed test/generators/app_generator_test.rb /^ def test_application_name_is_detected_if_it_exists_and_app_folder_renamed$/;" f class:AppGeneratorTest
+test_application_names_are_not_singularized test/generators/app_generator_test.rb /^ def test_application_names_are_not_singularized$/;" f class:AppGeneratorTest
+test_autoload_any_path_under_app test/railties/shared_tests.rb /^ def test_autoload_any_path_under_app$/;" f class:RailtiesTest
+test_being_quiet_while_creating_dummy_application test/generators/plugin_new_generator_test.rb /^ def test_being_quiet_while_creating_dummy_application$/;" f class:PluginNewGeneratorTest
+test_builder_option_with_empty_app_builder test/generators/shared_generator_tests.rb /^ def test_builder_option_with_empty_app_builder$/;" f class:SharedCustomGeneratorTests
+test_builder_option_with_http test/generators/shared_generator_tests.rb /^ def test_builder_option_with_http$/;" f class:SharedCustomGeneratorTests
+test_builder_option_with_relative_path test/generators/shared_generator_tests.rb /^ def test_builder_option_with_relative_path$/;" f class:SharedCustomGeneratorTests
+test_builder_option_with_simple_plugin_builder test/generators/shared_generator_tests.rb /^ def test_builder_option_with_simple_plugin_builder$/;" f class:SharedCustomGeneratorTests
+test_builder_option_with_tweak_plugin_builder test/generators/shared_generator_tests.rb /^ def test_builder_option_with_tweak_plugin_builder$/;" f class:SharedCustomGeneratorTests
+test_cache_is_disabled_in_dev_mode test/application/middleware/cache_test.rb /^ def test_cache_is_disabled_in_dev_mode$/;" f class:ApplicationTests.RoutingTest
+test_cache_works_with_etags test/application/middleware/cache_test.rb /^ def test_cache_works_with_etags$/;" f class:ApplicationTests.RoutingTest
+test_cache_works_with_etags_private test/application/middleware/cache_test.rb /^ def test_cache_works_with_etags_private$/;" f class:ApplicationTests.RoutingTest
+test_cache_works_with_expires test/application/middleware/cache_test.rb /^ def test_cache_works_with_expires$/;" f class:ApplicationTests.RoutingTest
+test_cache_works_with_expires_private test/application/middleware/cache_test.rb /^ def test_cache_works_with_expires_private$/;" f class:ApplicationTests.RoutingTest
+test_cache_works_with_last_modified test/application/middleware/cache_test.rb /^ def test_cache_works_with_last_modified$/;" f class:ApplicationTests.RoutingTest
+test_cache_works_with_last_modified_private test/application/middleware/cache_test.rb /^ def test_cache_works_with_last_modified_private$/;" f class:ApplicationTests.RoutingTest
+test_capify_should_run_the_capify_command test/generators/actions_test.rb /^ def test_capify_should_run_the_capify_command$/;" f class:ActionsTest
+test_case.rb lib/rails/generators/test_case.rb 1;" F
+test_check_class_collision test/generators/controller_generator_test.rb /^ def test_check_class_collision$/;" f class:ControllerGeneratorTest
+test_check_class_collision test/generators/helper_generator_test.rb /^ def test_check_class_collision$/;" f class:HelperGeneratorTest
+test_check_class_collision test/generators/mailer_generator_test.rb /^ def test_check_class_collision$/;" f
+test_check_class_collision test/generators/model_generator_test.rb /^ def test_check_class_collision$/;" f
+test_check_class_collision test/generators/plugin_generator_test.rb /^ def test_check_class_collision$/;" f class:PluginGeneratorTest
+test_check_class_collision_on_tests test/generators/helper_generator_test.rb /^ def test_check_class_collision_on_tests$/;" f class:HelperGeneratorTest
+test_code_statistics_sanity test/application/rake_test.rb /^ def test_code_statistics_sanity$/;" f class:ApplicationTests
+test_config_another_database test/generators/app_generator_test.rb /^ def test_config_another_database$/;" f class:AppGeneratorTest
+test_config_another_database test/generators/plugin_new_generator_test.rb /^ def test_config_another_database$/;" f class:PluginNewGeneratorTest
+test_config_database_is_added_by_default test/generators/app_generator_test.rb /^ def test_config_database_is_added_by_default$/;" f class:AppGeneratorTest
+test_config_jquery_javascript_library test/generators/app_generator_test.rb /^ def test_config_jquery_javascript_library$/;" f
+test_config_prototype_javascript_library test/generators/app_generator_test.rb /^ def test_config_prototype_javascript_library$/;" f
+test_constants_in_app_are_autoloaded test/application/loading_test.rb /^ def test_constants_in_app_are_autoloaded$/;" f class:LoadingTest
+test_controller_skeleton_is_created test/generators/controller_generator_test.rb /^ def test_controller_skeleton_is_created$/;" f class:ControllerGeneratorTest
+test_controller_skeleton_is_created test/generators/scaffold_controller_generator_test.rb /^ def test_controller_skeleton_is_created$/;" f class:ScaffoldControllerGeneratorTest
+test_copy_stylesheets test/generators/stylesheets_generator_test.rb /^ def test_copy_stylesheets$/;" f class:StylesheetsGeneratorTest
+test_copying_assets test/railties/shared_tests.rb /^ def test_copying_assets$/;" f class:RailtiesTest.SharedTests
+test_copying_migrations test/railties/shared_tests.rb /^ def test_copying_migrations$/;" f class:RailtiesTest.SharedTests
+test_create_file_should_write_block_contents_to_file_path test/generators/actions_test.rb /^ def test_create_file_should_write_block_contents_to_file_path$/;" f class:ActionsTest
+test_create_file_should_write_data_to_file_path test/generators/actions_test.rb /^ def test_create_file_should_write_data_to_file_path$/;" f class:ActionsTest
+test_create_mountable_application_with_mountable_option test/generators/plugin_new_generator_test.rb /^ def test_create_mountable_application_with_mountable_option$/;" f class:PluginNewGeneratorTest
+test_creates_generator_if_required test/generators/plugin_generator_test.rb /^ def test_creates_generator_if_required$/;" f class:PluginGeneratorTest
+test_creates_tasks_if_required test/generators/plugin_generator_test.rb /^ def test_creates_tasks_if_required$/;" f class:PluginGeneratorTest
+test_creating_engine_in_full_mode test/generators/plugin_new_generator_test.rb /^ def test_creating_engine_in_full_mode$/;" f class:PluginNewGeneratorTest
+test_customized_orm_is_used test/generators/scaffold_controller_generator_test.rb /^ def test_customized_orm_is_used$/;" f
+test_database_entry_is_assed_by_default_in_full_mode test/generators/plugin_new_generator_test.rb /^ def test_database_entry_is_assed_by_default_in_full_mode$/;" f class:PluginNewGeneratorTest
+test_default_banner_should_not_show_rails_generator_namespace test/generators_test.rb /^ def test_default_banner_should_not_show_rails_generator_namespace$/;" f class:GeneratorsTest
+test_default_banner_should_show_generator_namespace test/generators_test.rb /^ def test_default_banner_should_show_generator_namespace$/;" f class:GeneratorsTest
+test_default_namespace test/generators/app_generator_test.rb /^ def test_default_namespace$/;" f
+test_default_orm_is_used test/generators/scaffold_controller_generator_test.rb /^ def test_default_orm_is_used$/;" f
+test_default_usage test/generators/app_generator_test.rb /^ def test_default_usage$/;" f
+test_default_value_is_boolean test/generators/generated_attribute_test.rb /^ def test_default_value_is_boolean$/;" f class:GeneratedAttributeTest
+test_default_value_is_date test/generators/generated_attribute_test.rb /^ def test_default_value_is_date$/;" f class:GeneratedAttributeTest
+test_default_value_is_datetime test/generators/generated_attribute_test.rb /^ def test_default_value_is_datetime$/;" f class:GeneratedAttributeTest
+test_default_value_is_decimal test/generators/generated_attribute_test.rb /^ def test_default_value_is_decimal$/;" f class:GeneratedAttributeTest
+test_default_value_is_empty_string test/generators/generated_attribute_test.rb /^ def test_default_value_is_empty_string$/;" f class:GeneratedAttributeTest
+test_default_value_is_float test/generators/generated_attribute_test.rb /^ def test_default_value_is_float$/;" f class:GeneratedAttributeTest
+test_default_value_is_integer test/generators/generated_attribute_test.rb /^ def test_default_value_is_integer$/;" f class:GeneratedAttributeTest
+test_default_value_is_nil test/generators/generated_attribute_test.rb /^ def test_default_value_is_nil$/;" f class:GeneratedAttributeTest
+test_default_value_is_string test/generators/generated_attribute_test.rb /^ def test_default_value_is_string$/;" f class:GeneratedAttributeTest
+test_default_value_is_text test/generators/generated_attribute_test.rb /^ def test_default_value_is_text$/;" f class:GeneratedAttributeTest
+test_deprecation test/generators/plugin_generator_test.rb /^ def test_deprecation$/;" f class:PluginGeneratorTest
+test_descendants_are_cleaned_on_each_request_without_cache_classes test/application/loading_test.rb /^ def test_descendants_are_cleaned_on_each_request_without_cache_classes$/;" f
+test_dev_option test/generators/shared_generator_tests.rb /^ def test_dev_option$/;" f class:SharedGeneratorTests
+test_developer_options_are_overwriten_by_user_options test/generators_test.rb /^ def test_developer_options_are_overwriten_by_user_options$/;" f class:GeneratorsTest
+test_does_not_invoke_helper_if_required test/generators/controller_generator_test.rb /^ def test_does_not_invoke_helper_if_required$/;" f class:ControllerGeneratorTest
+test_does_not_invoke_test_framework_if_required test/generators/controller_generator_test.rb /^ def test_does_not_invoke_test_framework_if_required$/;" f class:ControllerGeneratorTest
+test_dummy_clean lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def test_dummy_clean$/;" f class:Rails.PluginBuilder
+test_dummy_config lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def test_dummy_config$/;" f class:Rails.PluginBuilder
+test_edge_option test/generators/shared_generator_tests.rb /^ def test_edge_option$/;" f class:SharedGeneratorTests
+test_ensure_that_database_option_is_passed_to_app_generator test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_database_option_is_passed_to_app_generator$/;" f class:PluginNewGeneratorTest
+test_ensure_that_javascript_option_is_passed_to_app_generator test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_javascript_option_is_passed_to_app_generator$/;" f class:PluginNewGeneratorTest
+test_ensure_that_plugin_options_are_not_passed_to_app_generator test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_plugin_options_are_not_passed_to_app_generator$/;" f class:PluginNewGeneratorTest
+test_ensure_that_skip_active_record_option_is_passed_to_app_generator test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_skip_active_record_option_is_passed_to_app_generator$/;" f class:PluginNewGeneratorTest
+test_ensure_that_skip_javascript_option_is_passed_to_app_generator test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_skip_javascript_option_is_passed_to_app_generator$/;" f class:PluginNewGeneratorTest
+test_ensure_that_test_dummy_can_be_generated_from_a_template test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_test_dummy_can_be_generated_from_a_template$/;" f class:PluginNewGeneratorTest
+test_ensure_that_tests_works test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_tests_works$/;" f class:PluginNewGeneratorTest
+test_ensure_that_tests_works_in_full_mode test/generators/plugin_new_generator_test.rb /^ def test_ensure_that_tests_works_in_full_mode$/;" f class:PluginNewGeneratorTest
+test_environment_is_required_in_rake_tasks test/application/rake_test.rb /^ def test_environment_is_required_in_rake_tasks$/;" f class:ApplicationTests.RakeTest
+test_environment_should_include_data_in_environment_initializer_block test/generators/actions_test.rb /^ def test_environment_should_include_data_in_environment_initializer_block$/;" f class:ActionsTest
+test_environment_with_block_should_include_block_contents_in_environment_initializer_block test/generators/actions_test.rb /^ def test_environment_with_block_should_include_block_contents_in_environment_initializer_block$/;" f class:ActionsTest
+test_existing_migration_is_removed_on_force test/generators/model_generator_test.rb /^ def test_existing_migration_is_removed_on_force$/;" f
+test_fallbacks_for_generators_on_find_by_namespace test/generators_test.rb /^ def test_fallbacks_for_generators_on_find_by_namespace$/;" f class:GeneratorsTest
+test_fallbacks_for_generators_on_find_by_namespace_with_context test/generators_test.rb /^ def test_fallbacks_for_generators_on_find_by_namespace_with_context$/;" f class:GeneratorsTest
+test_fallbacks_for_generators_on_invoke test/generators_test.rb /^ def test_fallbacks_for_generators_on_invoke$/;" f class:GeneratorsTest
+test_field_type_returns_check_box test/generators/generated_attribute_test.rb /^ def test_field_type_returns_check_box$/;" f class:GeneratedAttributeTest
+test_field_type_returns_date_select test/generators/generated_attribute_test.rb /^ def test_field_type_returns_date_select$/;" f class:GeneratedAttributeTest
+test_field_type_returns_datetime_select test/generators/generated_attribute_test.rb /^ def test_field_type_returns_datetime_select$/;" f class:GeneratedAttributeTest
+test_field_type_returns_text_area test/generators/generated_attribute_test.rb /^ def test_field_type_returns_text_area$/;" f class:GeneratedAttributeTest
+test_field_type_returns_text_field test/generators/generated_attribute_test.rb /^ def test_field_type_returns_text_field$/;" f class:GeneratedAttributeTest
+test_field_type_returns_time_select test/generators/generated_attribute_test.rb /^ def test_field_type_returns_time_select$/;" f class:GeneratedAttributeTest
+test_field_type_with_unknown_type_returns_text_field test/generators/generated_attribute_test.rb /^ def test_field_type_with_unknown_type_returns_text_field$/;" f class:GeneratedAttributeTest
+test_file_is_added_for_backwards_compatibility test/generators/app_generator_test.rb /^ def test_file_is_added_for_backwards_compatibility$/;" f
+test_files_from_inherited_invocation test/generators/resource_generator_test.rb /^ def test_files_from_inherited_invocation$/;" f class:ResourceGeneratorTest
+test_find_by_namespace test/generators_test.rb /^ def test_find_by_namespace$/;" f class:GeneratorsTest
+test_find_by_namespace_in_subfolder test/generators_test.rb /^ def test_find_by_namespace_in_subfolder$/;" f class:GeneratorsTest
+test_find_by_namespace_show_warning_if_generator_cant_be_loaded test/generators_test.rb /^ def test_find_by_namespace_show_warning_if_generator_cant_be_loaded$/;" f class:GeneratorsTest
+test_find_by_namespace_with_base test/generators_test.rb /^ def test_find_by_namespace_with_base$/;" f class:GeneratorsTest
+test_find_by_namespace_with_context test/generators_test.rb /^ def test_find_by_namespace_with_context$/;" f class:GeneratorsTest
+test_find_by_namespace_with_duplicated_name test/generators_test.rb /^ def test_find_by_namespace_with_duplicated_name$/;" f class:GeneratorsTest
+test_find_by_namespace_with_generator_on_root test/generators_test.rb /^ def test_find_by_namespace_with_generator_on_root$/;" f class:GeneratorsTest
+test_find_by_namespace_without_base_or_context_looks_into_rails_namespace test/generators_test.rb /^ def test_find_by_namespace_without_base_or_context_looks_into_rails_namespace$/;" f class:GeneratorsTest
+test_fixture_is_skipped test/generators/model_generator_test.rb /^ def test_fixture_is_skipped$/;" f
+test_fixture_is_skipped_if_fixture_replacement_is_given test/generators/model_generator_test.rb /^ def test_fixture_is_skipped_if_fixture_replacement_is_given$/;" f
+test_framework_version test/rails_info_test.rb /^ def test_framework_version$/;" f class:InfoTest
+test_frameworks_exist test/rails_info_test.rb /^ def test_frameworks_exist$/;" f class:InfoTest
+test_functional_tests test/generators/scaffold_controller_generator_test.rb /^ def test_functional_tests$/;" f
+test_gem_should_insert_on_separate_lines test/generators/actions_test.rb /^ def test_gem_should_insert_on_separate_lines$/;" f class:ActionsTest
+test_gem_should_put_gem_dependency_in_gemfile test/generators/actions_test.rb /^ def test_gem_should_put_gem_dependency_in_gemfile$/;" f class:ActionsTest
+test_gem_with_version_should_include_version_in_gemfile test/generators/actions_test.rb /^ def test_gem_with_version_should_include_version_in_gemfile$/;" f class:ActionsTest
+test_gems_tasks_are_loaded_first_than_application_ones test/application/rake_test.rb /^ def test_gems_tasks_are_loaded_first_than_application_ones$/;" f class:ApplicationTests.RakeTest
+test_generate_should_run_script_generate_with_argument_and_options test/generators/actions_test.rb /^ def test_generate_should_run_script_generate_with_argument_and_options$/;" f class:ActionsTest
+test_generating_test_files test/generators/plugin_new_generator_test.rb /^ def test_generating_test_files$/;" f class:PluginNewGeneratorTest
+test_generating_test_files_in_full_mode test/generators/plugin_new_generator_test.rb /^ def test_generating_test_files_in_full_mode$/;" f class:PluginNewGeneratorTest
+test_generator_if_skip_active_record_is_given test/generators/app_generator_test.rb /^ def test_generator_if_skip_active_record_is_given$/;" f class:AppGeneratorTest
+test_generator_skeleton_is_created test/generators/generator_generator_test.rb /^ def test_generator_skeleton_is_created$/;" f class:GeneratorGeneratorTest
+test_generator_skeleton_is_created_without_file_name_namespace test/generators/generator_generator_test.rb /^ def test_generator_skeleton_is_created_without_file_name_namespace$/;" f class:GeneratorGeneratorTest
+test_git_with_hash_should_run_each_command_using_git_scm test/generators/actions_test.rb /^ def test_git_with_hash_should_run_each_command_using_git_scm$/;" f class:ActionsTest
+test_git_with_symbol_should_run_command_using_git_scm test/generators/actions_test.rb /^ def test_git_with_symbol_should_run_command_using_git_scm$/;" f class:ActionsTest
+test_help.rb lib/rails/test_help.rb 1;" F
+test_help_does_not_show_invoked_generators_options_if_they_already_exist test/generators/controller_generator_test.rb /^ def test_help_does_not_show_invoked_generators_options_if_they_already_exist$/;" f class:ControllerGeneratorTest
+test_help_shows_invoked_generators_options test/generators/model_generator_test.rb /^ def test_help_shows_invoked_generators_options$/;" f class:ModelGeneratorTest
+test_help_when_a_generator_with_required_arguments_is_invoked_without_arguments test/generators_test.rb /^ def test_help_when_a_generator_with_required_arguments_is_invoked_without_arguments$/;" f class:GeneratorsTest
+test_help_with_inherited_options test/generators/resource_generator_test.rb /^ def test_help_with_inherited_options$/;" f class:ResourceGeneratorTest
+test_helper.rb lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb 1;" F
+test_helper.rb lib/rails/generators/test_unit/plugin/templates/test_helper.rb 1;" F
+test_helper.rb tmp/app/test/test_helper.rb 1;" F
+test_helper.rb tmp/app_template/test/test_helper.rb 1;" F
+test_helper_are_invoked_with_a_pluralized_name test/generators/scaffold_controller_generator_test.rb /^ def test_helper_are_invoked_with_a_pluralized_name$/;" f
+test_helper_skeleton_is_created test/generators/helper_generator_test.rb /^ def test_helper_skeleton_is_created$/;" f class:HelperGeneratorTest
+test_helpr_is_also_namespaced test/generators/namespaced_generators_test.rb /^ def test_helpr_is_also_namespaced$/;" f class:NamespacedControllerGeneratorTest
+test_homepage lib/rails/generators/rails/app/templates/test/performance/browsing_test.rb /^ def test_homepage$/;" f class:BrowsingTest
+test_homepage lib/rails/generators/test_unit/performance/templates/performance_test.rb /^ def test_homepage$/;" f
+test_homepage tmp/app/test/performance/browsing_test.rb /^ def test_homepage$/;" f class:BrowsingTest
+test_homepage tmp/app_template/test/performance/browsing_test.rb /^ def test_homepage$/;" f class:BrowsingTest
+test_html_includes_middleware test/rails_info_test.rb /^ def test_html_includes_middleware$/;" f class:InfoTest
+test_human_name test/generators/generated_attribute_test.rb /^ def test_human_name$/;" f class:GeneratedAttributeTest
+test_i18n_files_have_lower_priority_than_application_ones test/railties/shared_tests.rb /^ def test_i18n_files_have_lower_priority_than_application_ones$/;" f class:RailtiesTest
+test_index test/application/test_test.rb /^ def test_index$/;" f class:PostsTest
+test_index_helper test/generators/named_base_test.rb /^ def test_index_helper$/;" f class:NamedBaseTest
+test_index_helper_with_uncountable test/generators/named_base_test.rb /^ def test_index_helper_with_uncountable$/;" f class:NamedBaseTest
+test_inherited_invocations_with_attributes test/generators/resource_generator_test.rb /^ def test_inherited_invocations_with_attributes$/;" f class:ResourceGeneratorTest
+test_initializer_should_write_date_to_file_in_config_initializers test/generators/actions_test.rb /^ def test_initializer_should_write_date_to_file_in_config_initializers$/;" f class:ActionsTest
+test_initializers test/railties/shared_tests.rb /^ def test_initializers$/;" f class:RailtiesTest
+test_initializers_are_executed_in_rake_tasks test/application/rake_test.rb /^ def test_initializers_are_executed_in_rake_tasks$/;" f class:ApplicationTests.RakeTest
+test_install_migrations_and_assets test/railties/shared_tests.rb /^ def test_install_migrations_and_assets$/;" f class:RailtiesTest.SharedTests
+test_integration_test_skeleton_is_created test/generators/integration_test_generator_test.rb /^ def test_integration_test_skeleton_is_created$/;" f class:IntegrationTestGeneratorTest
+test_invalid_application_name_is_fixed test/generators/app_generator_test.rb /^ def test_invalid_application_name_is_fixed$/;" f class:AppGeneratorTest
+test_invalid_application_name_raises_an_error test/generators/app_generator_test.rb /^ def test_invalid_application_name_raises_an_error$/;" f class:AppGeneratorTest
+test_invalid_database_option_raises_an_error test/generators/shared_generator_tests.rb /^ def test_invalid_database_option_raises_an_error$/;" f class:SharedGeneratorTests
+test_invalid_plugin_name_is_fixed test/generators/plugin_new_generator_test.rb /^ def test_invalid_plugin_name_is_fixed$/;" f class:PluginNewGeneratorTest
+test_invalid_plugin_name_raises_an_error test/generators/plugin_new_generator_test.rb /^ def test_invalid_plugin_name_raises_an_error$/;" f class:PluginNewGeneratorTest
+test_invoke_other_generator_with_full_namespace test/generators/actions_test.rb /^ def test_invoke_other_generator_with_full_namespace$/;" f class:ActionsTest
+test_invoke_other_generator_with_shortcut test/generators/actions_test.rb /^ def test_invoke_other_generator_with_shortcut$/;" f class:ActionsTest
+test_invoke_when_generator_is_not_found test/generators_test.rb /^ def test_invoke_when_generator_is_not_found$/;" f class:GeneratorsTest
+test_invoke_with_config_values test/generators_test.rb /^ def test_invoke_with_config_values$/;" f class:GeneratorsTest
+test_invoke_with_default_values test/generators_test.rb /^ def test_invoke_with_default_values$/;" f class:GeneratorsTest
+test_invoke_with_nested_namespaces test/generators_test.rb /^ def test_invoke_with_nested_namespaces$/;" f class:GeneratorsTest
+test_invokes_default_orm test/generators/model_generator_test.rb /^ def test_invokes_default_orm$/;" f class:ModelGeneratorTest
+test_invokes_default_orm test/generators/namespaced_generators_test.rb /^ def test_invokes_default_orm$/;" f class:NamespacedObserverGeneratorTest
+test_invokes_default_orm test/generators/observer_generator_test.rb /^ def test_invokes_default_orm$/;" f class:ObserverGeneratorTest
+test_invokes_default_orm_with_class_path test/generators/namespaced_generators_test.rb /^ def test_invokes_default_orm_with_class_path$/;" f class:NamespacedObserverGeneratorTest
+test_invokes_default_orm_with_class_path test/generators/observer_generator_test.rb /^ def test_invokes_default_orm_with_class_path$/;" f class:ObserverGeneratorTest
+test_invokes_default_template_engine test/generators/controller_generator_test.rb /^ def test_invokes_default_template_engine$/;" f class:ControllerGeneratorTest
+test_invokes_default_template_engine test/generators/mailer_generator_test.rb /^ def test_invokes_default_template_engine$/;" f
+test_invokes_default_template_engine test/generators/namespaced_generators_test.rb /^ def test_invokes_default_template_engine$/;" f
+test_invokes_default_template_engine test/generators/namespaced_generators_test.rb /^ def test_invokes_default_template_engine$/;" f class:NamespacedControllerGeneratorTest
+test_invokes_default_template_engine_even_with_no_action test/generators/controller_generator_test.rb /^ def test_invokes_default_template_engine_even_with_no_action$/;" f class:ControllerGeneratorTest
+test_invokes_default_template_engine_even_with_no_action test/generators/mailer_generator_test.rb /^ def test_invokes_default_template_engine_even_with_no_action$/;" f
+test_invokes_default_template_engine_even_with_no_action test/generators/namespaced_generators_test.rb /^ def test_invokes_default_template_engine_even_with_no_action$/;" f
+test_invokes_default_template_engine_even_with_no_action test/generators/namespaced_generators_test.rb /^ def test_invokes_default_template_engine_even_with_no_action$/;" f class:NamespacedControllerGeneratorTest
+test_invokes_default_test_framework test/generators/controller_generator_test.rb /^ def test_invokes_default_test_framework$/;" f class:ControllerGeneratorTest
+test_invokes_default_test_framework test/generators/helper_generator_test.rb /^ def test_invokes_default_test_framework$/;" f class:HelperGeneratorTest
+test_invokes_default_test_framework test/generators/mailer_generator_test.rb /^ def test_invokes_default_test_framework$/;" f
+test_invokes_default_test_framework test/generators/model_generator_test.rb /^ def test_invokes_default_test_framework$/;" f
+test_invokes_default_test_framework test/generators/namespaced_generators_test.rb /^ def test_invokes_default_test_framework$/;" f
+test_invokes_default_test_framework test/generators/namespaced_generators_test.rb /^ def test_invokes_default_test_framework$/;" f class:NamespacedControllerGeneratorTest
+test_invokes_default_test_framework test/generators/namespaced_generators_test.rb /^ def test_invokes_default_test_framework$/;" f class:NamespacedModelGeneratorTest
+test_invokes_default_test_framework test/generators/namespaced_generators_test.rb /^ def test_invokes_default_test_framework$/;" f class:NamespacedObserverGeneratorTest
+test_invokes_default_test_framework test/generators/observer_generator_test.rb /^ def test_invokes_default_test_framework$/;" f class:ObserverGeneratorTest
+test_invokes_default_test_framework test/generators/plugin_generator_test.rb /^ def test_invokes_default_test_framework$/;" f class:PluginGeneratorTest
+test_invokes_helper test/generators/controller_generator_test.rb /^ def test_invokes_helper$/;" f class:ControllerGeneratorTest
+test_javascript_is_skipped_if_required test/generators/app_generator_test.rb /^ def test_javascript_is_skipped_if_required$/;" f
+test_javascripts_generation test/generators/plugin_new_generator_test.rb /^ def test_javascripts_generation$/;" f class:PluginNewGeneratorTest
+test_lib_should_write_data_to_file_in_lib test/generators/actions_test.rb /^ def test_lib_should_write_data_to_file_in_lib$/;" f class:ActionsTest
+test_load_generators_from_railties test/generators_test.rb /^ def test_load_generators_from_railties$/;" f class:GeneratorsTest
+test_logs_if_the_template_engine_cannot_be_found test/generators/mailer_generator_test.rb /^ def test_logs_if_the_template_engine_cannot_be_found$/;" f
+test_logs_if_the_test_framework_cannot_be_found test/generators/helper_generator_test.rb /^ def test_logs_if_the_test_framework_cannot_be_found$/;" f class:HelperGeneratorTest
+test_logs_if_the_test_framework_cannot_be_found test/generators/observer_generator_test.rb /^ def test_logs_if_the_test_framework_cannot_be_found$/;" f class:ObserverGeneratorTest
+test_logs_if_the_test_framework_cannot_be_found test/generators/plugin_generator_test.rb /^ def test_logs_if_the_test_framework_cannot_be_found$/;" f class:PluginGeneratorTest
+test_mailer_skeleton_is_created test/generators/mailer_generator_test.rb /^ def test_mailer_skeleton_is_created$/;" f class:MailerGeneratorTest
+test_mailer_skeleton_is_created test/generators/namespaced_generators_test.rb /^ def test_mailer_skeleton_is_created$/;" f class:NamespacedMailerGeneratorTest
+test_mailer_with_i18n_helper test/generators/mailer_generator_test.rb /^ def test_mailer_with_i18n_helper$/;" f
+test_mailer_with_i18n_helper test/generators/namespaced_generators_test.rb /^ def test_mailer_with_i18n_helper$/;" f
+test_mailer_with_namedspaced_mailer test/generators/mailer_generator_test.rb /^ def test_mailer_with_namedspaced_mailer$/;" f
+test_mass_nouns_do_not_throw_warnings test/generators/resource_generator_test.rb /^ def test_mass_nouns_do_not_throw_warnings$/;" f
+test_midleware_referenced_in_configuration test/railties/shared_tests.rb /^ def test_midleware_referenced_in_configuration$/;" f class:RailtiesTest
+test_migration test/generators/migration_generator_test.rb /^ def test_migration$/;" f class:MigrationGeneratorTest
+test_migration test/generators/model_generator_test.rb /^ def test_migration$/;" f class:ModelGeneratorTest
+test_migration test/generators/namespaced_generators_test.rb /^ def test_migration$/;" f class:NamespacedModelGeneratorTest
+test_migration_error_is_not_shown_on_revoke test/generators/model_generator_test.rb /^ def test_migration_error_is_not_shown_on_revoke$/;" f
+test_migration_is_ignored_as_identical_with_skip_option test/generators/model_generator_test.rb /^ def test_migration_is_ignored_as_identical_with_skip_option$/;" f
+test_migration_is_removed_on_revoke test/generators/model_generator_test.rb /^ def test_migration_is_removed_on_revoke$/;" f
+test_migration_is_skipped test/generators/model_generator_test.rb /^ def test_migration_is_skipped$/;" f class:ModelGeneratorTest
+test_migration_is_skipped_on_skip_behavior test/generators/model_generator_test.rb /^ def test_migration_is_skipped_on_skip_behavior$/;" f
+test_migration_is_skipped_with_skip_option test/generators/model_generator_test.rb /^ def test_migration_is_skipped_with_skip_option$/;" f
+test_migration_timestamps_are_skipped test/generators/model_generator_test.rb /^ def test_migration_timestamps_are_skipped$/;" f
+test_migration_with_attributes test/generators/model_generator_test.rb /^ def test_migration_with_attributes$/;" f class:ModelGeneratorTest
+test_migration_with_class_name test/generators/migration_generator_test.rb /^ def test_migration_with_class_name$/;" f class:MigrationGeneratorTest
+test_migration_with_namespace test/generators/model_generator_test.rb /^ def test_migration_with_namespace$/;" f class:ModelGeneratorTest
+test_migration_with_namespace test/generators/namespaced_generators_test.rb /^ def test_migration_with_namespace$/;" f class:NamespacedModelGeneratorTest
+test_migration_with_namespaces_in_model_name_without_plurization test/generators/model_generator_test.rb /^ def test_migration_with_namespaces_in_model_name_without_plurization$/;" f class:ModelGeneratorTest
+test_migration_with_nested_namespace test/generators/model_generator_test.rb /^ def test_migration_with_nested_namespace$/;" f class:ModelGeneratorTest
+test_migration_with_nested_namespace test/generators/namespaced_generators_test.rb /^ def test_migration_with_nested_namespace$/;" f class:NamespacedModelGeneratorTest
+test_migration_with_nested_namespace_without_pluralization test/generators/model_generator_test.rb /^ def test_migration_with_nested_namespace_without_pluralization$/;" f class:ModelGeneratorTest
+test_migration_with_nested_namespace_without_pluralization test/generators/namespaced_generators_test.rb /^ def test_migration_with_nested_namespace_without_pluralization$/;" f class:NamespacedModelGeneratorTest
+test_migration_with_timestamps test/generators/model_generator_test.rb /^ def test_migration_with_timestamps$/;" f
+test_migration_without_pluralization test/generators/model_generator_test.rb /^ def test_migration_without_pluralization$/;" f class:ModelGeneratorTest
+test_migration_without_timestamps test/generators/model_generator_test.rb /^ def test_migration_without_timestamps$/;" f
+test_migrations_generated_simultaneously test/generators/migration_generator_test.rb /^ def test_migrations_generated_simultaneously$/;" f class:MigrationGeneratorTest
+test_missing_type_raises_exception test/generators/generated_attribute_test.rb /^ def test_missing_type_raises_exception$/;" f class:GeneratedAttributeTest
+test_model_and_migration_generator_with_change_syntax test/application/rake_test.rb /^ def test_model_and_migration_generator_with_change_syntax$/;" f class:ApplicationTests
+test_model_with_belongs_to_attribute_generates_belongs_to_associations test/generators/model_generator_test.rb /^ def test_model_with_belongs_to_attribute_generates_belongs_to_associations$/;" f
+test_model_with_missing_attribute_type test/generators/model_generator_test.rb /^ def test_model_with_missing_attribute_type$/;" f class:ModelGeneratorTest
+test_model_with_namespace test/generators/model_generator_test.rb /^ def test_model_with_namespace$/;" f class:ModelGeneratorTest
+test_model_with_namespace test/generators/namespaced_generators_test.rb /^ def test_model_with_namespace$/;" f class:NamespacedModelGeneratorTest
+test_model_with_parent_option test/generators/model_generator_test.rb /^ def test_model_with_parent_option$/;" f class:ModelGeneratorTest
+test_model_with_references_attribute_generates_belongs_to_associations test/generators/model_generator_test.rb /^ def test_model_with_references_attribute_generates_belongs_to_associations$/;" f
+test_model_with_underscored_parent_option test/generators/model_generator_test.rb /^ def test_model_with_underscored_parent_option$/;" f class:ModelGeneratorTest
+test_models_without_table_do_not_panic_on_scope_definitions_when_loaded test/application/loading_test.rb /^ def test_models_without_table_do_not_panic_on_scope_definitions_when_loaded$/;" f class:LoadingTest
+test_module_file_is_not_created test/generators/namespaced_generators_test.rb /^ def test_module_file_is_not_created$/;" f class:NamespacedModelGeneratorTest
+test_name_collision_raises_an_error test/generators/shared_generator_tests.rb /^ def test_name_collision_raises_an_error$/;" f class:SharedGeneratorTests
+test_name_raises_an_error_if_name_already_used_constant test/generators/shared_generator_tests.rb /^ def test_name_raises_an_error_if_name_already_used_constant$/;" f class:SharedGeneratorTests
+test_named_generator_attributes test/generators/named_base_test.rb /^ def test_named_generator_attributes$/;" f class:NamedBaseTest
+test_named_generator_attributes_as_ruby test/generators/named_base_test.rb /^ def test_named_generator_attributes_as_ruby$/;" f class:NamedBaseTest
+test_named_generator_attributes_without_pluralized test/generators/named_base_test.rb /^ def test_named_generator_attributes_without_pluralized$/;" f class:NamedBaseTest
+test_named_generator_with_underscore test/generators/named_base_test.rb /^ def test_named_generator_with_underscore$/;" f class:NamedBaseTest
+test_namespaced_and_not_namespaced_helpers test/generators/helper_generator_test.rb /^ def test_namespaced_and_not_namespaced_helpers$/;" f class:HelperGeneratorTest
+test_namespaced_controller_skeleton_is_created test/generators/namespaced_generators_test.rb /^ def test_namespaced_controller_skeleton_is_created$/;" f class:NamespacedControllerGeneratorTest
+test_namespaced_controller_with_additional_namespace test/generators/namespaced_generators_test.rb /^ def test_namespaced_controller_with_additional_namespace$/;" f class:NamespacedControllerGeneratorTest
+test_namespaced_controllers_with_namespaced_routes test/railties/shared_tests.rb /^ def test_namespaced_controllers_with_namespaced_routes$/;" f class:RailtiesTest
+test_namespaced_generator_skeleton test/generators/generator_generator_test.rb /^ def test_namespaced_generator_skeleton$/;" f class:GeneratorGeneratorTest
+test_namespaced_generator_skeleton_without_file_name_namespace test/generators/generator_generator_test.rb /^ def test_namespaced_generator_skeleton_without_file_name_namespace$/;" f class:GeneratorGeneratorTest
+test_nested_fallbacks_for_generators test/generators_test.rb /^ def test_nested_fallbacks_for_generators$/;" f class:GeneratorsTest
+test_new_session_should_return_integration_session test/application/console_test.rb /^ def test_new_session_should_return_integration_session$/;" f class:ConsoleTest
+test_nil_type_raises_exception test/generators/generated_attribute_test.rb /^ def test_nil_type_raises_exception$/;" f class:GeneratedAttributeTest
+test_no_color_sets_proper_shell test/generators_test.rb /^ def test_no_color_sets_proper_shell$/;" f class:GeneratorsTest
+test_options_before_application_name_raises_an_error test/generators/shared_generator_tests.rb /^ def test_options_before_application_name_raises_an_error$/;" f class:SharedGeneratorTests
+test_overriding_test_framework test/generators/plugin_new_generator_test.rb /^ def test_overriding_test_framework$/;" f class:CustomPluginGeneratorTest
+test_passing_dummy_path_as_a_parameter test/generators/plugin_new_generator_test.rb /^ def test_passing_dummy_path_as_a_parameter$/;" f class:PluginNewGeneratorTest
+test_performance_test_skeleton_is_created test/generators/performance_test_generator_test.rb /^ def test_performance_test_skeleton_is_created$/;" f class:PerformanceTestGeneratorTest
+test_plugin_generator_on_revoke test/generators/plugin_generator_test.rb /^ def test_plugin_generator_on_revoke$/;" f class:PluginGeneratorTest
+test_plugin_new_generate_pretend test/generators/shared_generator_tests.rb /^ def test_plugin_new_generate_pretend$/;" f class:SharedGeneratorTests
+test_plugin_skeleton_is_created test/generators/plugin_generator_test.rb /^ def test_plugin_skeleton_is_created$/;" f class:PluginGeneratorTest
+test_plugin_with_git_option_and_branch_should_run_plugin_install test/generators/actions_test.rb /^ def test_plugin_with_git_option_and_branch_should_run_plugin_install$/;" f class:ActionsTest
+test_plugin_with_git_option_and_submodule_should_use_git_scm test/generators/actions_test.rb /^ def test_plugin_with_git_option_and_submodule_should_use_git_scm$/;" f class:ActionsTest
+test_plugin_with_git_option_should_run_plugin_install test/generators/actions_test.rb /^ def test_plugin_with_git_option_should_run_plugin_install$/;" f class:ActionsTest
+test_plugin_with_no_options_should_skip_method test/generators/actions_test.rb /^ def test_plugin_with_no_options_should_skip_method$/;" f class:ActionsTest
+test_plugin_with_svn_option_and_revision_should_run_plugin_install test/generators/actions_test.rb /^ def test_plugin_with_svn_option_and_revision_should_run_plugin_install$/;" f class:ActionsTest
+test_plugin_with_svn_option_should_run_plugin_install test/generators/actions_test.rb /^ def test_plugin_with_svn_option_should_run_plugin_install$/;" f class:ActionsTest
+test_plural_names_are_singularized test/generators/resource_generator_test.rb /^ def test_plural_names_are_singularized$/;" f
+test_plural_names_can_be_forced test/generators/resource_generator_test.rb /^ def test_plural_names_can_be_forced$/;" f
+test_property_with_block test/rails_info_test.rb /^ def test_property_with_block$/;" f class:InfoTest
+test_property_with_block_swallows_exceptions_and_ignores_property test/rails_info_test.rb /^ def test_property_with_block_swallows_exceptions_and_ignores_property$/;" f class:InfoTest
+test_property_with_string test/rails_info_test.rb /^ def test_property_with_string$/;" f class:InfoTest
+test_prototype_and_test_unit_are_added_by_default test/generators/app_generator_test.rb /^ def test_prototype_and_test_unit_are_added_by_default$/;" f
+test_puts_its_controllers_directory_on_autoload_path test/railties/shared_tests.rb /^ def test_puts_its_controllers_directory_on_autoload_path$/;" f class:RailtiesTest
+test_puts_its_lib_directory_on_load_path test/railties/shared_tests.rb /^ def test_puts_its_lib_directory_on_load_path$/;" f class:RailtiesTest
+test_puts_its_models_directory_on_autoload_path test/railties/shared_tests.rb /^ def test_puts_its_models_directory_on_autoload_path$/;" f class:RailtiesTest
+test_rails_generators_does_not_show_active_record_hooks test/generators_test.rb /^ def test_rails_generators_does_not_show_active_record_hooks$/;" f class:GeneratorsTest
+test_rails_generators_help_does_not_include_app_nor_plugin_new test/generators_test.rb /^ def test_rails_generators_help_does_not_include_app_nor_plugin_new$/;" f class:GeneratorsTest
+test_rails_generators_help_with_builtin_information test/generators_test.rb /^ def test_rails_generators_help_with_builtin_information$/;" f class:GeneratorsTest
+test_rails_generators_with_others_information test/generators_test.rb /^ def test_rails_generators_with_others_information$/;" f class:GeneratorsTest
+test_rails_root_templates test/generators_test.rb /^ def test_rails_root_templates$/;" f class:GeneratorsTest
+test_rails_update_generates_correct_session_key test/generators/app_generator_test.rb /^ def test_rails_update_generates_correct_session_key$/;" f class:AppGeneratorTest
+test_rake_routes_output_strips_anchors_from_http_verbs test/application/rake_test.rb /^ def test_rake_routes_output_strips_anchors_from_http_verbs$/;" f class:ApplicationTests
+test_rake_should_run_rake_command_with_development_env test/generators/actions_test.rb /^ def test_rake_should_run_rake_command_with_development_env$/;" f class:ActionsTest
+test_rake_tasks_lib_tasks_are_loaded test/railties/shared_tests.rb /^ def test_rake_tasks_lib_tasks_are_loaded$/;" f class:RailtiesTest
+test_rake_with_env_option_should_run_rake_command_in_env test/generators/actions_test.rb /^ def test_rake_with_env_option_should_run_rake_command_in_env$/;" f class:ActionsTest
+test_rake_with_sudo_option_should_run_rake_command_with_sudo test/generators/actions_test.rb /^ def test_rake_with_sudo_option_should_run_rake_command_with_sudo$/;" f class:ActionsTest
+test_rakefile_should_write_date_to_file_in_lib_tasks test/generators/actions_test.rb /^ def test_rakefile_should_write_date_to_file_in_lib_tasks$/;" f class:ActionsTest
+test_readme test/generators/actions_test.rb /^ def test_readme$/;" f class:ActionsTest
+test_reference_is_false test/generators/generated_attribute_test.rb /^ def test_reference_is_false$/;" f class:GeneratedAttributeTest
+test_reference_is_true test/generators/generated_attribute_test.rb /^ def test_reference_is_true$/;" f class:GeneratedAttributeTest
+test_reload_should_fire_preparation_and_cleanup_callbacks test/application/console_test.rb /^ def test_reload_should_fire_preparation_and_cleanup_callbacks$/;" f class:ConsoleTest
+test_reload_should_reload_constants test/application/console_test.rb /^ def test_reload_should_reload_constants$/;" f class:ConsoleTest
+test_remove_migration_with_attributes test/generators/migration_generator_test.rb /^ def test_remove_migration_with_attributes$/;" f
+test_resource_controller_with_actions test/generators/resource_generator_test.rb /^ def test_resource_controller_with_actions$/;" f class:ResourceGeneratorTest
+test_resource_controller_with_pluralized_class_name test/generators/resource_generator_test.rb /^ def test_resource_controller_with_pluralized_class_name$/;" f class:ResourceGeneratorTest
+test_resource_routes_are_added test/generators/resource_generator_test.rb /^ def test_resource_routes_are_added$/;" f
+test_route_is_removed_on_revoke test/generators/resource_generator_test.rb /^ def test_route_is_removed_on_revoke$/;" f
+test_route_should_add_data_to_the_routes_block_in_config_routes test/generators/actions_test.rb /^ def test_route_should_add_data_to_the_routes_block_in_config_routes$/;" f class:ActionsTest
+test_routes_are_added_to_router test/railties/shared_tests.rb /^ def test_routes_are_added_to_router$/;" f class:RailtiesTest
+test_routes_in_plugins_have_lower_priority_than_application_ones test/railties/shared_tests.rb /^ def test_routes_in_plugins_have_lower_priority_than_application_ones$/;" f class:RailtiesTest
+test_routes_should_not_be_namespaced test/generators/namespaced_generators_test.rb /^ def test_routes_should_not_be_namespaced$/;" f class:NamespacedControllerGeneratorTest
+test_scaffold_generator_on_revoke_does_not_mutilate_legacy_map_parameter test/generators/scaffold_generator_test.rb /^ def test_scaffold_generator_on_revoke_does_not_mutilate_legacy_map_parameter$/;" f
+test_scaffold_generator_outputs_error_message_on_missing_attribute_type test/generators/scaffold_generator_test.rb /^ def test_scaffold_generator_outputs_error_message_on_missing_attribute_type$/;" f
+test_scaffold_on_invoke test/generators/namespaced_generators_test.rb /^ def test_scaffold_on_invoke$/;" f class:NamespacedScaffoldGeneratorTest
+test_scaffold_on_invoke test/generators/scaffold_generator_test.rb /^ def test_scaffold_on_invoke$/;" f class:ScaffoldGeneratorTest
+test_scaffold_on_revoke test/generators/namespaced_generators_test.rb /^ def test_scaffold_on_revoke$/;" f
+test_scaffold_on_revoke test/generators/scaffold_generator_test.rb /^ def test_scaffold_on_revoke$/;" f
+test_scaffold_plural_names test/generators/named_base_test.rb /^ def test_scaffold_plural_names$/;" f class:NamedBaseTest
+test_scaffold_plural_names_as_ruby test/generators/named_base_test.rb /^ def test_scaffold_plural_names_as_ruby$/;" f class:NamedBaseTest
+test_scaffold_with_namespace_on_invoke test/generators/namespaced_generators_test.rb /^ def test_scaffold_with_namespace_on_invoke$/;" f
+test_scaffold_with_namespace_on_invoke test/generators/scaffold_generator_test.rb /^ def test_scaffold_with_namespace_on_invoke$/;" f
+test_scaffold_with_namespace_on_revoke test/generators/namespaced_generators_test.rb /^ def test_scaffold_with_namespace_on_revoke$/;" f
+test_scaffold_with_namespace_on_revoke test/generators/scaffold_generator_test.rb /^ def test_scaffold_with_namespace_on_revoke$/;" f
+test_session_migration_with_custom_table_name test/generators/session_migration_generator_test.rb /^ def test_session_migration_with_custom_table_name$/;" f class:SessionMigrationGeneratorTest
+test_session_migration_with_default_name test/generators/session_migration_generator_test.rb /^ def test_session_migration_with_default_name$/;" f class:SessionMigrationGeneratorTest
+test_session_migration_with_given_name test/generators/session_migration_generator_test.rb /^ def test_session_migration_with_given_name$/;" f class:SessionMigrationGeneratorTest
+test_shebang_is_added_to_rails_file test/generators/shared_generator_tests.rb /^ def test_shebang_is_added_to_rails_file$/;" f class:SharedGeneratorTests
+test_shebang_when_is_the_same_as_default_use_env test/generators/shared_generator_tests.rb /^ def test_shebang_when_is_the_same_as_default_use_env$/;" f class:SharedGeneratorTests
+test_should_create_empty_migrations_if_name_not_start_with_add_or_remove test/generators/migration_generator_test.rb /^ def test_should_create_empty_migrations_if_name_not_start_with_add_or_remove$/;" f
+test_should_give_higher_preference_to_rails_generators test/generators_test.rb /^ def test_should_give_higher_preference_to_rails_generators$/;" f class:GeneratorsTest
+test_should_include_runner_in_shebang_line_in_help test/application/runner_test.rb /^ def test_should_include_runner_in_shebang_line_in_help$/;" f class:ApplicationTests.RunnerTest
+test_should_run_file test/application/runner_test.rb /^ def test_should_run_file$/;" f class:ApplicationTests.RunnerTest
+test_should_run_ruby_statement test/application/runner_test.rb /^ def test_should_run_ruby_statement$/;" f class:ApplicationTests.RunnerTest
+test_should_set_dollar_0_to_file test/application/runner_test.rb /^ def test_should_set_dollar_0_to_file$/;" f class:ApplicationTests.RunnerTest
+test_should_set_dollar_program_name_to_file test/application/runner_test.rb /^ def test_should_set_dollar_program_name_to_file$/;" f class:ApplicationTests.RunnerTest
+test_simple_invoke test/generators_test.rb /^ def test_simple_invoke$/;" f class:GeneratorsTest
+test_skeleton_is_created test/generators/shared_generator_tests.rb /^ def test_skeleton_is_created$/;" f class:SharedGeneratorTests
+test_skip_helper_if_required test/generators/scaffold_controller_generator_test.rb /^ def test_skip_helper_if_required$/;" f
+test_skip_javascripts test/generators/plugin_new_generator_test.rb /^ def test_skip_javascripts$/;" f class:PluginNewGeneratorTest
+test_skip_layout_if_required test/generators/scaffold_controller_generator_test.rb /^ def test_skip_layout_if_required$/;" f
+test_skipping_gemspec test/generators/plugin_new_generator_test.rb /^ def test_skipping_gemspec$/;" f class:PluginNewGeneratorTest
+test_skipping_javascripts_without_mountable_option test/generators/plugin_new_generator_test.rb /^ def test_skipping_javascripts_without_mountable_option$/;" f class:PluginNewGeneratorTest
+test_skipping_namespace test/generators/namespaced_generators_test.rb /^ def test_skipping_namespace$/;" f class:NamespacedControllerGeneratorTest
+test_source_paths_for_not_namespaced_generators test/generators_test.rb /^ def test_source_paths_for_not_namespaced_generators$/;" f
+test_stylesheets_are_not_deleted_on_revoke test/generators/stylesheets_generator_test.rb /^ def test_stylesheets_are_not_deleted_on_revoke$/;" f class:StylesheetsGeneratorTest
+test_template_engine_with_class_path test/generators/controller_generator_test.rb /^ def test_template_engine_with_class_path$/;" f class:ControllerGeneratorTest
+test_template_from_dir_pwd test/generators/app_generator_test.rb /^ def test_template_from_dir_pwd$/;" f
+test_template_from_dir_pwd test/generators/plugin_new_generator_test.rb /^ def test_template_from_dir_pwd$/;" f class:PluginNewGeneratorTest
+test_template_is_executed_when_supplied test/generators/shared_generator_tests.rb /^ def test_template_is_executed_when_supplied$/;" f class:SharedGeneratorTests
+test_template_is_executed_when_supplied_an_https_path test/generators/shared_generator_tests.rb /^ def test_template_is_executed_when_supplied_an_https_path$/;" f class:SharedGeneratorTests
+test_template_raises_an_error_with_invalid_path test/generators/shared_generator_tests.rb /^ def test_template_raises_an_error_with_invalid_path$/;" f class:SharedGeneratorTests
+test_test.rb test/application/test_test.rb 1;" F
+test_test_unit_is_removed_from_frameworks_if_skip_test_unit_is_given test/generators/app_generator_test.rb /^ def test_test_unit_is_removed_from_frameworks_if_skip_test_unit_is_given$/;" f
+test_test_unit_is_skipped_if_required test/generators/shared_generator_tests.rb /^ def test_test_unit_is_skipped_if_required$/;" f class:SharedGeneratorTests
+test_truth test/application/test_test.rb /^ def test_truth$/;" f class:ApplicationTests.FooTest
+test_truth test/application/test_test.rb /^ def test_truth$/;" f class:ApplicationTests.TestTest.FooTest
+test_unit.rb lib/rails/generators/test_unit.rb 1;" F
+test_usage_read_from_file test/generators/app_generator_test.rb /^ def test_usage_read_from_file$/;" f
+test_vendor_should_write_data_to_file_in_vendor test/generators/actions_test.rb /^ def test_vendor_should_write_data_to_file_in_vendor$/;" f class:ActionsTest
+test_views_are_generated test/generators/scaffold_controller_generator_test.rb /^ def test_views_are_generated$/;" f
+tests lib/rails/generators/test_case.rb /^ def self.tests(klass)$/;" F class:Rails.Generators.TestCase
+textile guides/rails_guides/generator.rb /^ def textile(body, lite_mode=false)$/;" f class:RailsGuides.Generator
+textile_extensions.rb guides/rails_guides/textile_extensions.rb 1;" F
+threadsafe! lib/rails/application/configuration.rb /^ def threadsafe!$/;" f class:Rails.Application.Configuration
+tip guides/rails_guides/textile_extensions.rb /^ def tip(body)$/;" f class:RailsGuides.TextileExtensions
+title_to_idx guides/rails_guides/indexer.rb /^ def title_to_idx(title)$/;" f class:RailsGuides.Indexer
+tmp lib/rails/generators/rails/app/app_generator.rb /^ def tmp$/;" f
+tmp_path test/isolation/abstract_unit.rb /^ def tmp_path(*args)$/;" f class:TestHelpers.Paths
+toHTML lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function toHTML(object) {$/;" f
+toHTML tmp/app/public/javascripts/prototype.js /^ function toHTML(object) {$/;" f
+toHTML tmp/app_template/public/javascripts/prototype.js /^ function toHTML(object) {$/;" f
+toJSON lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function toJSON(value) {$/;" f
+toJSON tmp/app/public/javascripts/prototype.js /^ function toJSON(value) {$/;" f
+toJSON tmp/app_template/public/javascripts/prototype.js /^ function toJSON(value) {$/;" f
+toQueryString lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function toQueryString(object) {$/;" f
+toQueryString tmp/app/public/javascripts/prototype.js /^ function toQueryString(object) {$/;" f
+toQueryString tmp/app_template/public/javascripts/prototype.js /^ function toQueryString(object) {$/;" f
+to_html lib/rails/info.rb /^ def to_html$/;" f class:Rails
+to_param test/railties/engine_test.rb /^ def to_param$/;" f class:Bukkits.Post
+to_param test/railties/mounted_engine_test.rb /^ def to_param$/;" f class:ApplicationTests.ApplicationRoutingTest.Blog.Post
+to_prepare lib/rails/railtie/configuration.rb /^ def to_prepare(&blk)$/;" f class:Rails.Railtie.Configuration
+to_prepare_blocks lib/rails/railtie/configuration.rb /^ def to_prepare_blocks$/;" f class:Rails.Railtie.Configuration
+to_s lib/rails/code_statistics.rb /^ def to_s$/;" f class:CodeStatistics
+to_s lib/rails/commands/plugin.rb /^ def to_s$/;" f class:Plugin
+to_s lib/rails/info.rb /^ def to_s$/;" f class:Rails
+to_s lib/rails/source_annotation_extractor.rb /^ def to_s(options={})$/;" f class:SourceAnnotationExtractor.Annotation
+tsort_each_child lib/rails/initializable.rb /^ def tsort_each_child(initializer, &block)$/;" f class:Rails.Initializable.Collection
+tweak_builder.rb test/fixtures/lib/app_builders/tweak_builder.rb 1;" F
+tweak_builder.rb test/fixtures/lib/plugin_builders/tweak_builder.rb 1;" F
+two test/initializable_test.rb /^ def two$/;" f class:InitializableTests.OverriddenInitializer.MoreInitializers
+uncountable? lib/rails/generators/named_base.rb /^ def uncountable?$/;" f class:Rails.Generators
+uninstall lib/rails/commands/plugin.rb /^ def uninstall$/;" f class:Plugin
+uninstall.rb lib/rails/generators/rails/plugin/templates/uninstall.rb 1;" F
+unit_test.rb lib/rails/generators/test_unit/model/templates/unit_test.rb 1;" F
+unit_test.rb lib/rails/generators/test_unit/observer/templates/unit_test.rb 1;" F
+update lib/rails/generators/rails/scaffold_controller/templates/controller.rb /^ def update$/;" f
+update.rb lib/rails/commands/update.rb 1;" F
+update_attributes lib/rails/generators/active_model.rb /^ def update_attributes(params=nil)$/;" f class:Rails.Generators.ActiveModel
+url_for_engine_route test/railties/mounted_engine_test.rb /^ def url_for_engine_route$/;" f class:ApplicationTests.ApplicationRoutingTest.ApplicationGeneratingController
+url_generation_test.rb test/application/url_generation_test.rb 1;" F
+use lib/rails/configuration.rb /^ def use(*args, &block)$/;" f class:Rails.Configuration.MiddlewareStackProxy
+use_checkout? lib/rails/commands/plugin.rb /^ def use_checkout?$/;" f class:RailsEnvironment
+use_externals? lib/rails/commands/plugin.rb /^ def use_externals?$/;" f class:RailsEnvironment
+use_frameworks test/isolation/abstract_unit.rb /^ def use_frameworks(arr)$/;" f
+use_svn? lib/rails/commands/plugin.rb /^ def use_svn?$/;" f class:RailsEnvironment
+valid_const? lib/rails/generators/rails/app/app_generator.rb /^ def valid_const?$/;" f class:Generators.AppGenerator
+valid_const? lib/rails/generators/rails/plugin_new/plugin_new_generator.rb /^ def valid_const?$/;" f class:Generators.PluginNewGenerator
+validate guides/w3c_validator.rb /^ def validate$/;" f class:RailsGuides.Validator
+value_for lib/rails/info.rb /^ def value_for(property_name)$/;" f class:Rails.Info
+values lib/rails/generators/rails/app/templates/public/javascripts/prototype.js /^ function values(object) {$/;" f
+values tmp/app/public/javascripts/prototype.js /^ function values(object) {$/;" f
+values tmp/app_template/public/javascripts/prototype.js /^ function values(object) {$/;" f
+var.Effect._elementDoesNotExistError lib/rails/generators/rails/app/templates/public/javascripts/effects.js /^var Effect = {$/;" p
+var.Effect._elementDoesNotExistError tmp/app/public/javascripts/effects.js /^var Effect = {$/;" p
+var.Effect._elementDoesNotExistError tmp/app_template/public/javascripts/effects.js /^var Effect = {$/;" p
+vendor lib/rails/generators/actions.rb /^ def vendor(filename, data=nil, &block)$/;" f class:Rails.Generators
+vendor_plugins lib/rails/generators/rails/app/app_generator.rb /^ def vendor_plugins$/;" f
+version lib/rails.rb /^ def version$/;" f class:Rails
+version.rb lib/rails/version.rb 1;" F
+w3c_validator.rb guides/w3c_validator.rb 1;" F
+wait test/application/initializers/notifications_test.rb /^ def wait$/;" f class:ApplicationTests.NotificationsTest
+warn_about_broken_links guides/rails_guides/generator.rb /^ def warn_about_broken_links(html)$/;" f class:RailsGuides
+with_bare_config test/application/generators_test.rb /^ def with_bare_config$/;" f class:ApplicationTests.GeneratorsTest
+with_config test/application/generators_test.rb /^ def with_config$/;" f class:ApplicationTests.GeneratorsTest
+with_workaround_for_notextile guides/rails_guides/generator.rb /^ def with_workaround_for_notextile(body)$/;" f class:RailsGuides.Generator
+wrap_with_namespace lib/rails/generators/named_base.rb /^ def wrap_with_namespace(content)$/;" f class:Rails.Generators.NamedBase
+write test/isolation/abstract_unit.rb /^ def write(file, string)$/;" f class:Bukkit
+wrong_generator.rb test/fixtures/lib/generators/wrong_generator.rb 1;" F
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/CHANGES b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/CHANGES
new file mode 100755
index 00000000000..7008bb73e80
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/CHANGES
@@ -0,0 +1,522 @@
+= Rake Changelog
+
+== Master (for 0.9.3)
+
+* The rake test loader now removes arguments it has processed. Issue #51
+* Rake::TaskArguments now responds to #values_at
+* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7
+* Rake tests are now directory-independent
+* Rake tests are no longer require flexmock
+* Commands constant is no longer polluting top level namespace.
+
+== Version 0.9.2
+
+* Unknown
+
+== Version 0.9.1
+
+* Added deprecation warnings to the Rake DSL methods.
+
+== Version 0.9.0
+
+* *Incompatible* *change*: Rake DSL commands ('task', 'file', etc.) are
+ no longer private methods in Object. If you need to call 'task :xzy' inside
+ your class, include Rake::DSL into the class. The DSL is still available at
+ the top level scope (via the top level object which extends Rake::DSL).
+
+* Rake now warns when the deprecated :needs syntax used.
+
+* Rake history is now UTF-8 encoded.
+
+* Rake now uses case-insensitive comparisons to find the Rakefile on Windows.
+ Based on patch by Roger Pack.
+
+* Rake now requires (instead of loads) files in the test task. Patch by Cezary
+ Baginski.
+
+* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow.
+
+* Rake now prints the Rakefile directory only when it's different from the
+ current directory. Patch by Alex Chaffee.
+
+* Improved rakefile_location discovery on Windows. Patch by James Tucker.
+
+* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias
+ Lüdtke
+
+* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require
+ 'rdoc/task')
+
+* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require
+ 'rubygems/package_task')
+
+* Rake now outputs various messages to $stderr instead of $stdout.
+
+* Rake no longer emits warnings for Config. Patch by Santiago Pastorino.
+
+* Split rake.rb into individual files.
+
+* Support for the --where (-W) flag for showing where a task is defined.
+
+* Fixed quoting in test task.
+ (http://onestepback.org/redmine/issues/show/44,
+ http://www.pivotaltracker.com/story/show/1223138)
+
+* Fixed the silent option parsing problem.
+ (http://onestepback.org/redmine/issues/show/47)
+
+* Fixed :verbose=>false flag on sh and ruby commands.
+
+* Rake command line options may be given by default in a RAKEOPT
+ environment variable.
+
+* Errors in Rake will now display the task invocation chain in effect
+ at the time of the error.
+
+* Accepted change by warnickr to not expand test patterns in shell
+ (allowing more files in the test suite).
+
+* Fixed that file tasks did not perform prereq lookups in scope
+ (Redmine #57).
+
+== Version 0.8.7
+
+* Fixed EXEEXT for JRuby on windows.
+
+== Version 0.8.6
+
+* Minor fixes to the RDoc generation (removed dependency on darkfish
+ and removed inline source option).
+
+== PreVersion 0.8.6
+
+* Now allow # comments to comment a task definition.
+
+== Version 0.8.5
+
+* Better support for the system command on Windows.
+
+== Version 0.8.4
+
+* Preserve case when locating rakefiles (patch from James
+ M. Lawrence/quix)
+
+* Better support for windows paths in the test task (patch from Simon
+ Chiang/bahuvrihi)
+
+* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH,
+ APPDATA, USERPROFILE (patch from Luis Lavena)
+
+* MingGW is now recognized as a windows platform. (patch from Luis
+ Lavena)
+
+* Numerous fixes to the windows test suite (patch from Luis Lavena).
+
+* Improved Rakefile case insensitivity testing (patch from Luis
+ Lavena).
+
+* Fixed stray ARGV option problem that was interfering with
+ Test::Unit::Runner.
+
+* Fixed default verbose mode (was accidently changed to false).
+
+* Removed reference to manage_gem to fix the warning produced by the
+ gem package task.
+
+== Version 0.8.3
+
+* Enhanced the system directory detection in windows. We now check
+ HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch
+ supplied by James Tucker). Rake no long aborts if it can't find the
+ directory.
+
+* Added fix to handle ruby installations in directories with spaces in
+ their name.
+
+== Version 0.8.2
+
+* Fixed bug in package task so that it will include the subdir
+ directory in the package for testing. (Bug found by Adam Majer)
+
+* Added ENV var to rakefile to prevent OS X from including extended
+ attribute junk in a tar file. (Bug found by Adam Majer)
+
+* Fixed filename dependency order bug in test_inspect_pending and
+ test_to_s_pending. (Bug found by Adam Majer)
+
+* Fixed check for file utils options to make them immune to the
+ symbol/string differences. (Patch supplied by Edwin Pratomo)
+
+* Fixed bug with rules involving multiple source (Patch supplied by
+ Emanuel Indermühle)
+
+* Switched from getoptlong to optparse (patches supplied by Edwin
+ Pratomo)
+
+* The -T option will now attempt to dynamically sense the size of the
+ terminal. RAKE_COLUMNS will override any dynamic sensing.
+
+* FileList#clone and FileList#dup have better sematics w.r.t. taint
+ and freeze.
+
+* Added ability clear prerequisites, and/or actions from an existing
+ task.
+
+* Added the ability to reenable a task to be invoked a second time.
+
+* Changed RDoc test task to have no default template. This makes it
+ easier for the tempate to pick up the template from the environment.
+
+* Changed from using Mutex to Monitor. Evidently Mutex causes thread
+ join errors when Ruby is compiled with -disable-pthreads. (Patch
+ supplied by Ittay Dror)
+
+* Fixed bug in makefile parser that had problems with extra spaces in
+ file task names. (Patch supplied by Ittay Dror)
+
+* Added a performance patch for reading large makefile dependency
+ files. (Patch supplied by Ittay Dror)
+
+* Default values for task arguments can easily be specified with the
+ :with_defaults method. (Idea for default argument merging supplied
+ by (Adam Q. Salter)
+
+* The -T output will only self-truncate if the output is a tty.
+ However, if RAKE_COLUMNS is explicitly set, it will be honored in
+ any case. (Patch provided by Gavin Stark).
+
+* Numerous fixes for running under windows. A big thanks to Bheeshmar
+ Redheendran for spending a good part of the afternoon at the
+ Lonestar Ruby Conference to help me work out these issues.
+
+== Version 0.8.1
+
+* Removed requires on parsedate.rb (in Ftptools)
+* Removed ftools from rake.rb. Made it options in sys.rb
+
+== Version 0.8.0
+
+* Added task parameters (e.g. "rake build[version7]")
+* Made task parameters passable to prerequisites.
+* Comments are limited to 80 columns or so (suggested by Jamis Buck).
+* Added -D to display full comments (suggested by Jamis Buck).
+* The rake program will set the status value used in any explicit
+ exit(n) calls. (patch provided by Stephen Touset)
+* Fixed error in functional tests that were not including session (and
+ silently skipping the functionl tests.
+* Removed --usage and make -h the same as -H.
+* Make a prettier inspect for tasks.
+
+== Version 0.7.3
+
+* Added existing and existing! methods to FileList
+* FileLists now claim to be Arrays (via is_a?) to get better support
+ from the FileUtil module.
+* Added init and top_level for custom rake applications.
+
+== Version 0.7.2
+
+* Error messages are now send to stderr rather than stdout (from
+ Payton Quackenbush).
+* Better error handling on invalid command line arguments (from Payton
+ Quackenbush).
+* Added rcov task and updated unit testing for better code coverage.
+* Fixed some bugs where the application object was going to the global
+ appliation instead of using its own data.
+* Added square and curly bracket patterns to FileList#include (Tilman
+ Sauerbeck).
+* Added plain filename support to rule dependents (suggested by Nobu
+ Nakada).
+* Added pathmap support to rule dependents.
+* Added a 'tasks' method to a namespace to get a list of tasks
+ associated with the namespace.
+* Fixed the method name leak from FileUtils (bug found by Glenn
+ Vanderburg).
+* Added rake_extension to handle detection of extension collisions.
+* Added test for noop, bad_option and verbose flags to sh command.
+* Removed dependency on internal fu_xxx functions from FileUtils.
+* Added a 'shame' task to the Rakefile.
+* Added tar_command and zip_command options to the Package task.
+* Added a description to the gem task in GemPackageTask.
+* Fixed a bug when rules have multiple prerequisites (patch by Joel
+ VanderWerf)
+* Added a protected 'require "rubygems"' to test/test_application to
+ unbreak cruisecontrol.rb.
+* Added the handful of RakeFileUtils to the private method as well.
+* Added block based exclusion.
+* The clean task will no longer delete 'core' if it is a directory.
+* Removed rake_dup. Now we just simply rescue a bad dup.
+* Refactored the FileList reject logic to remove duplication.
+* Removed if __FILE__ at the end of the rake.rb file.
+
+== Version 0.7.1
+
+* Added optional filter parameter to the --tasks command line option.
+* Added flatten to allow rule transform procs to return lists of
+ prereqs (Joel VanderWerf provided patch).
+* Added pathmap to String and FileList.
+* The -r option will now load .rake files (but a straight require
+ doesn't yet). NOTE: This is experimental ... it may be
+ discontinued.
+* The -f option without a value will disable the search for a
+ Rakefile. The assumption is that the -r files are adequate.
+* Fixed the safe_ln function to fall back to cp in more error
+ scenarios.
+
+== Version 0.7.0
+
+* Added Rake.original_dir to return the original starting directory of
+ the rake application.
+* Added safe_ln support for openAFS (from Ludvig Omholt).
+* Added --trace reminder on short exception messages (David Heinemeier
+ Hansson suggestion).
+* Added multitask declaration that executes prerequisites in
+ parallel. (Doug Young providied an initial implementation).
+* Fixed missing_const hack to be compatible with Rails. (Jamis Buck
+ supplied test case).
+* Made the RDoc task default to internal (in-process) RDoc formatting.
+ The old behavior is still available by setting the +external+ flag
+ to true.
+* Rakefiles are now loaded with the expanded path to prevent
+ accidental polution from the Ruby load path.
+* The +namespace+ command now returns a NameSpace object that can be
+ used to lookup tasks defined in that namespace. This allows for
+ better anonymous namespace behavior.
+* Task objects my now be used in prerequisite lists directly.
+
+== Version 0.6.1
+
+* Rebuilt 0.6.0 gem without signing.
+
+== Version 0.6.0
+
+* Fixed file creation bug in the unit tests (caused infinite loop on
+ windows).
+* Fixed bug where session based functional tests were run under
+ windows.
+* Fixed bug in directory tasks so that updating a directory will not
+ retrigger file tasks depending on the directory (see
+ FileCreationTask and EarlyTime).
+* Added egrep to FileList
+* ruby command now runs same ruby version as rake.
+* Added investigation to task object. (suggested by Martin Fowler)
+* Added ruby_opts to the test task to allow arbitrary ruby options to
+ be passed to the test script. (Greg Fast)
+* Fixed the test loader to ignore options. (Greg Fast)
+* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake
+ module namespace. Old style namespace behavior can be invoked via
+ the --classic-namespace option. (requested by Kelly Felkins).
+* GemTask is now sensitive to the gem platform (Masao Mutoh).
+* A non-existing file prerequisite will no longer cause an exception
+ (Philipp Neubeck).
+* Multiple prerequisites on Rake rules now allowed (initial patch
+ supplied by Stuart Jansen).
+
+== Version 0.5.4
+
+* Added double quotes to the test runner.
+* Added .svn to default ignore list.
+* Updated FileList#include to support nested arrays and filelists.
+
+== Version 0.5.3
+
+* Added support for importing Rakefile and other dependencies.
+* Fixed bug so that now rules can chain off of existing tasks as well
+ as existing files.
+* Fixed verbose flag bug in the testing task. Shortened some failure
+ messages.
+* Make FileUtils methods private at the top level module to avoid
+ accidental method leaking into other objects.
+* Added test loader option to test task. "testrb" is no longer the
+ default test loader. It is now eating syntax errors that should
+ halt the unit tests.
+* Revamped FileList so that it works more like and array (addressed
+ flatten bug). Added many tests around file list.
+* Added +ext+ method to both String and FileList.
+
+== Version 0.5.0
+
+* Fixed documentation that was lacking the Rake module name (Tilman
+ Sauerbeck).
+* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck).
+* Recursive rules are now supported (Tilman Sauerbeck).
+* Added warning option for the Test Task (requested by Eric Hodel).
+* The jamis rdoc template is only used if it exists.
+* Added fix for Ruby 1.8.2 test/unit and rails problem.
+* Added contributed rake man file (Jani Monoses).
+* Added Brian Candler's fix for problems in --trace and --dry-run
+ mode.
+
+== Version 0.4.15
+
+* Fixed a bug that prevented the TESTOPTS flag from working with the
+ revised for 1.8.2 test task.
+* Updated the docs on --trace to indicate that it also enables a full
+ backtrace on errors.
+
+== Version 0.4.14
+
+* Modified the TestTask to workaround the Ruby 1.8.2 change in
+ autoexecuting unit tests.
+
+== Version 0.4.13
+
+* Fixed the dry-run flag so it is operating again.
+* Multiple arguments to sh and ruby commands will not be interpreted
+ by the shell (patch provided by Jonathan Paisley).
+
+== Version 0.4.12
+
+* Added --silent (-s) to suppress the (in directory) rake message.
+
+== Version 0.4.11
+
+* Changed the "don't know how to rake" message (finally)
+* Changes references to a literal "Rakefile" to reference the global
+ variable $rakefile (which contains the actual name of the rakefile).
+
+== Version 0.4.10
+
+* Added block support to the "sh" command, allowing users to take
+ special actions on the result of the system call. E.g.
+
+ sh "shell_command" do |ok, res|
+ puts "Program returned #{res.exitstatus}" if ! ok
+ end
+
+== Version 0.4.9
+
+* Switched to Jamis Buck's RDoc template.
+* Removed autorequire from Rake's gem spec. This prevents the Rake
+ libraries from loading while using rails.
+
+== Version 0.4.8
+
+* Added support for .rb versions of Rakefile.
+* Removed \\\n's from test task.
+* Fixed Ruby 1.9 compatibility issue with FileList.
+
+== Version 0.4.7
+
+* Fixed problem in FileList that caused Ruby 1.9 to go into infinite
+ recursion. Since to_a was removed from Object, it does not need to
+ added back into the list of methods to rewrite in FileList. (Thanks
+ to Kent Sibilev for pointing this out).
+
+== Version 0.4.6
+* Removed test version of ln in FileUtils that prevented safe_ln from
+ using ln.
+
+== Version 0.4.5
+* Upgraded comments in TestTask.
+* FileList to_s and inspect now automatically resolve pending changes.
+* FileList#exclude properly returns the FileList.
+
+== Version 0.4.4
+* Fixed initialization problem with @comment.
+* Now using multi -r technique in TestTask. Switch Rakefile back to
+ using the built-in test task macros because the rake runtime is no
+ longer needed.
+* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task
+ macros.
+* Allow a +test_files+ attribute in test tasks. This allows more
+ flexibility in specifying test files.
+
+== Version 0.4.3
+* Fixed Comment leakage.
+
+== Version 0.4.2
+* Added safe_ln that falls back to a copy if a file link is not supported.
+* Package builder now uses safe_ln.
+
+== Version 0.4.1
+* Task comments are now additive, combined with "/".
+* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0)
+
+== Version 0.4.0
+* FileList now uses deferred loading. The file system is not searched
+ until the first call that needs the file names.
+* VAR=VALUE options are now accepted on the command line and are
+ treated like environment variables. The values may be tested in a
+ Rakefile by referencing ENV['VAR'].
+* File.mtime is now used (instead of File.new().mtime).
+
+== Version 0.3.2.x
+
+* Removed some hidden dependencies on rubygems. Tests now will test
+ gems only if they are installed.
+* Removed Sys from some example files. I believe that is that last
+ reference to Sys outside of the contrib area.
+* Updated all copyright notices to include 2004.
+
+== Version 0.3.2
+
+* GEM Installation now works with the application stub.
+
+== Version 0.3.1
+
+* FileLists now automatically ignore CVS, .bak, !
+* GEM Installation now works.
+
+== Version 0.3.0
+
+Promoted 0.2.10.
+
+== Version 0.2.10
+General
+
+* Added title to Rake's rdocs
+* Contrib packages are no longer included in the documentation.
+
+RDoc Issues
+
+* Removed default for the '--main' option
+* Fixed rendering of the rdoc options
+* Fixed clean/clobber confusion with rerdoc
+* 'title' attribute added
+
+Package Task Library Issues
+
+* Version (or explicit :noversion) is required.
+* +package_file+ attribute is now writable
+
+FileList Issues
+
+* Dropped bang version of exclude. Now using ant-like include/exclude semantics.
+* Enabled the "yield self" idiom in FileList#initialize.
+
+== Version 0.2.9
+
+This version contains numerous changes as the RubyConf.new(2003)
+presentation was being prepared. The changes include:
+
+* The monolithic rubyapp task library is in the process of being
+ dropped in favor of lighter weight task libraries.
+
+== Version 0.2.7
+
+* Added "desc" for task descriptions.
+* -T will now display tasks with descriptions.
+* -P will display tasks and prerequisites.
+* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys
+ is still supported in the contrib area.
+
+== Version 0.2.6
+
+* Moved to RubyForge
+
+== Version 0.2.5
+
+* Switched to standard ruby app builder.
+* Added no_match option to file matcher.
+
+== Version 0.2.4
+
+* Fixed indir, which neglected to actually change directories.
+
+== Version 0.2.3
+
+* Added rake module for a help target
+* Added 'for_files' to Sys
+* Added a $rakefile constant
+* Added test for selecting proper rule with multiple targets.
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/MIT-LICENSE
similarity index 90%
rename from sonar-server/src/main/webapp/WEB-INF/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE
rename to sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/MIT-LICENSE
index ed8e9ee66db..72734753965 100755
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/MIT-LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2008 The Ruby I18n team
+Copyright (c) 2003, 2004 Jim Weirich
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -17,4 +17,5 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/README.rdoc b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/README.rdoc
new file mode 100755
index 00000000000..62efebf09b7
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/README.rdoc
@@ -0,0 +1,197 @@
+= RAKE -- Ruby Make
+
+This package contains Rake, a simple ruby build program with capabilities
+similar to make.
+
+Rake has the following features:
+
+* Rakefiles (rake's version of Makefiles) are completely defined in
+ standard Ruby syntax. No XML files to edit. No quirky Makefile
+ syntax to worry about (is that a tab or a space?)
+
+* Users can specify tasks with prerequisites.
+
+* Rake supports rule patterns to synthesize implicit tasks.
+
+* Flexible FileLists that act like arrays but know about manipulating
+ file names and paths.
+
+* A library of prepackaged tasks to make building rakefiles easier. For example,
+ tasks for building tarballs and publishing to FTP or SSH sites. (Formerly
+ tasks for building RDoc and Gems were included in rake but they're now
+ available in RDoc and RubyGems respectively.)
+
+* Supports parallel execution of tasks.
+
+== Installation
+
+=== Gem Installation
+
+Download and install rake with the following.
+
+ gem install rake
+
+=== Normal Installation
+
+You can download the source tarball of the latest version of Rake from
+
+* http://rubyforge.org/project/showfiles.php?group_id=50
+
+Extract the tarball and run
+
+ % ruby install.rb
+
+from its distribution directory.
+
+== Usage
+
+=== Simple Example
+
+First, you must write a "Rakefile" file which contains the build rules. Here's
+a simple example:
+
+ task :default => [:test]
+
+ task :test do
+ ruby "test/unittest.rb"
+ end
+
+This Rakefile has two tasks:
+
+* A task named "test", which - upon invocation - will run a unit test file in
+ Ruby.
+* A task named "default". This task does nothing by itself, but it has exactly
+ one dependency, namely the "test" task. Invoking the "default" task will
+ cause Rake to invoke the "test" task as well.
+
+Running the "rake" command without any options will cause it to run the
+"default" task in the Rakefile:
+
+ % ls
+ Rakefile test/
+ % rake
+ (in /home/some_user/Projects/rake)
+ ruby test/unittest.rb
+ ....unit test output here...
+
+Type "rake --help" for all available options.
+
+
+=== More Information
+
+* For details on Rake's command-line invocation, read
+ doc/command_line_usage.rdoc[http://rake.rubyforge.org/files/doc/command_line_usage_rdoc.html]
+* For details on writing Rakefiles, see
+ doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html].
+* For the original announcement of Rake, see
+ doc/rational.rdoc[http://rake.rubyforge.org/files/doc/rational_rdoc.html].
+* For a glossary of terms, see
+ doc/glossary.rdoc[http://rake.rubyforge.org/files/doc/glossary_rdoc.html].
+
+== Development
+
+=== Source Repository
+
+Rake is currently hosted at github. The github web page is
+http://github.com/jimweirich/rake. The public git clone URL is
+
+* git://github.com/jimweirich/rake.git
+
+=== Running the Rake Test Suite
+
+If you wish to run the unit and functional tests that come with Rake:
+
+* Install the 'flexmock' gem
+* Install the 'session' gem in order to run the functional tests.
+* CD into the top project directory of rake.
+* Type one of the following:
+
+ rake # If you have a version of rake installed
+ ruby -Ilib bin/rake # If you do not have a version of rake installed.
+
+=== Issues and Bug Reports
+
+Feature requests and bug reports can be made here
+
+* https://github.com/jimweirich/rake/issues
+
+Issues and bug reports can also be tracked here:
+
+* http://www.pivotaltracker.com/projects/28469
+
+== Online Resources
+
+=== Rake References
+
+* Rake Documentation Home: http://docs.rubyrake.org
+* Rake Project Page: http://rubyforge.org/projects/rake
+* Rake API Documents: http://rake.rubyforge.org
+* Rake Source Code Repo: http://github.com/jimweirich/rake
+* Rake Git Repo Clone URL: git://github.com/jimweirich/rake.git
+* Rake Issue Tracking: http://www.pivotaltracker.com/projects/28469
+* Rake Bug Reports: https://github.com/jimweirich/rake/issues
+
+=== Presentations and Articles about Rake
+
+* Jim Weirich's 2003 RubyConf presentation:
+ http://onestepback.org/articles/buildingwithrake/
+* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html
+
+== Other Make Reinvisionings ...
+
+Rake is a late entry in the make replacement field. Here are links to
+other projects with similar (and not so similar) goals.
+
+* http://directory.fsf.org/bras.html -- Bras, one of earliest
+ implementations of "make in a scripting language".
+* http://www.a-a-p.org -- Make in Python
+* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make
+* http://ant.apache.org -- The Ant project
+* http://ppt.perl.org/commands/make/index.html -- Make from the Perl
+ Power Tools implementation.
+* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System
+* http://make.rubyforge.org -- Rant, another Ruby make tool.
+
+== Credits
+
+[Ryan Dlugosz] For the initial conversation that sparked Rake.
+
+[nobu.nokada@softhome.net] For the initial patch for rule support.
+
+[Tilman Sauerbeck ] For the recursive rule patch.
+
+== License
+
+Rake is available under an MIT-style license.
+
+:include: MIT-LICENSE
+
+== Support
+
+The Rake homepage is http://rake.rubyforge.org. You can find the Rake
+RubyForge page at http://rubyforge.org/projects/rake.
+
+Feel free to submit commits or feature requests. If you send a patch,
+remember to update the corresponding unit tests. In fact, I prefer
+new feature to be submitted in the form of new unit tests.
+
+For other information, feel free to ask on the ruby-talk mailing list
+(which is mirrored to comp.lang.ruby) or contact
+jim dot weirich at gmail.com.
+
+---
+
+= Other stuff
+
+Author:: Jim Weirich
+Requires:: Ruby 1.8.6 or later
+License:: Copyright 2003-2008 by Jim Weirich.
+ Released under an MIT-style license. See the LICENSE file
+ included in the distribution.
+
+== Warranty
+
+This software is provided "as is" and without any express or
+implied warranties, including, without limitation, the implied
+warranties of merchantibility and fitness for a particular
+purpose.
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/Rakefile b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/Rakefile
new file mode 100755
index 00000000000..2e2c40d5482
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/Rakefile
@@ -0,0 +1,369 @@
+# Rakefile for rake -*- ruby -*-
+
+# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org)
+# All rights reserved.
+
+# This file may be distributed under an MIT style license. See
+# MIT-LICENSE for details.
+
+require 'rbconfig'
+require 'rubygems'
+
+system_rake = File.join RbConfig::CONFIG['rubylibdir'], 'rake.rb'
+
+# Use our rake, not the installed rake from system
+if $".include? system_rake or $".grep(/rake\/name_space\.rb$/).empty? then
+ exec Gem.ruby, '-Ilib', 'bin/rake', *ARGV
+end
+
+require 'rubygems/package_task'
+
+require 'rake/clean'
+require 'rake/testtask'
+
+begin
+ gem 'rdoc'
+ require 'rdoc/task'
+rescue Gem::LoadError
+end
+
+CLEAN.include('**/*.o', '*.dot', '**/*.rbc')
+CLOBBER.include('doc/example/main')
+CLOBBER.include('TAGS')
+CLOBBER.include('coverage', 'rcov_aggregate')
+
+# Prevent OS X from including extended attribute junk in the tar output
+ENV['COPY_EXTENDED_ATTRIBUTES_DISABLE'] = 'true'
+
+def announce(msg='')
+ STDERR.puts msg
+end
+
+# Determine the current version of the software
+
+if `ruby -Ilib ./bin/rake --version` =~ /rake, version ([0-9a-z.]+)$/
+ CURRENT_VERSION = $1
+else
+ CURRENT_VERSION = "0.0.0"
+end
+
+$package_version = CURRENT_VERSION
+
+SRC_RB = FileList['lib/**/*.rb']
+
+# The default task is run if rake is given no explicit arguments.
+
+desc "Default Task"
+task :default => :test
+
+# Test Tasks ---------------------------------------------------------
+
+Rake::TestTask.new do |t|
+ files = FileList['test/helper.rb', 'test/test_*.rb']
+ t.test_files = files
+ t.libs << "."
+ t.warning = true
+end
+
+begin
+ require 'rcov/rcovtask'
+ IGNORE_COVERAGE_IN = FileList[
+ 'lib/rake/rdoctask.rb',
+ 'lib/rake/testtask.rb',
+ 'lib/rake/packagetask.rb',
+ 'lib/rake/clean.rb',
+ ]
+
+ unless File::ALT_SEPARATOR
+ IGNORE_COVERAGE_IN.include(
+ 'lib/rake/alt_system.rb',
+ 'lib/rake/win32.rb')
+ end
+
+ Rcov::RcovTask.new do |t|
+ t.libs << "test"
+ t.rcov_opts = [
+ '-xRakefile', '-xrakefile', '-xpublish.rf',
+ '-xlib/rake/contrib', '-x/Library', '-x.rvm',
+ '--text-report',
+ '--sort coverage'
+ ] + FileList['rakelib/*.rake'].pathmap("-x%p") +
+ IGNORE_COVERAGE_IN.map { |fn| "-x#{fn}" }
+ t.test_files = FileList[
+ 'test/lib/*_test.rb',
+ 'test/contrib/*_test.rb',
+ 'test/functional/*_test.rb'
+ ]
+ t.output_dir = 'coverage'
+ t.verbose = true
+ end
+rescue LoadError
+ task :rcov do
+ puts "RCov is not available"
+ end
+end
+
+# CVS Tasks ----------------------------------------------------------
+
+# Install rake using the standard install.rb script.
+
+desc "Install the application"
+task :install do
+ ruby "install.rb"
+end
+
+# Create a task to build the RDOC documentation tree.
+
+BASE_RDOC_OPTIONS = [
+ '--line-numbers', '--show-hash',
+ '--main', 'README.rdoc',
+ '--title', 'Rake -- Ruby Make'
+]
+
+if defined?(RDoc::Task) then
+ RDoc::Task.new do |rdoc|
+ rdoc.rdoc_dir = 'html'
+ rdoc.title = "Rake -- Ruby Make"
+ rdoc.options = BASE_RDOC_OPTIONS.dup
+
+ rdoc.rdoc_files.include('README.rdoc', 'MIT-LICENSE', 'TODO', 'CHANGES')
+ rdoc.rdoc_files.include('lib/**/*.rb', 'doc/**/*.rdoc')
+ rdoc.rdoc_files.exclude(/\bcontrib\b/)
+ end
+else
+ warn "RDoc 2.4.2+ is required to build documentation"
+end
+
+# ====================================================================
+# Create a task that will package the Rake software into distributable
+# tar, zip and gem files.
+
+PKG_FILES = FileList[
+ '.gemtest',
+ 'install.rb',
+ '[A-Z]*',
+ 'bin/rake',
+ 'lib/**/*.rb',
+ 'test/**/*.rb',
+ 'doc/**/*'
+]
+PKG_FILES.exclude('doc/example/*.o')
+PKG_FILES.exclude('TAGS')
+PKG_FILES.exclude(%r{doc/example/main$})
+
+if ! defined?(Gem)
+ puts "Package Target requires RubyGems"
+else
+ SPEC = Gem::Specification.new do |s|
+ s.name = 'rake'
+ s.version = $package_version
+ s.summary = "Ruby based make-like utility."
+ s.description = <<-EOF.delete "\n"
+Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
+specified in standard Ruby syntax.
+ EOF
+
+ s.required_ruby_version = '>= 1.8.6'
+ s.required_rubygems_version = '>= 1.3.2'
+ s.add_development_dependency 'minitest', '~> 2.1'
+
+ s.files = PKG_FILES.to_a
+
+ s.executables = ["rake"]
+
+ s.extra_rdoc_files = FileList[
+ 'README.rdoc',
+ 'MIT-LICENSE',
+ 'TODO',
+ 'CHANGES',
+ 'doc/**/*.rdoc'
+ ]
+
+ s.rdoc_options = BASE_RDOC_OPTIONS
+
+ s.author = "Jim Weirich"
+ s.email = "jim@weirichhouse.org"
+ s.homepage = "http://rake.rubyforge.org"
+ s.rubyforge_project = "rake"
+ end
+
+ Gem::PackageTask.new(SPEC) do |pkg|
+ pkg.need_zip = true
+ pkg.need_tar = true
+ end
+
+ file "rake.gemspec" => ["Rakefile", "lib/rake.rb"] do |t|
+ require 'yaml'
+ open(t.name, "w") { |f| f.puts SPEC.to_yaml }
+ end
+
+ desc "Create a stand-alone gemspec"
+ task :gemspec => "rake.gemspec"
+end
+
+# Misc tasks =========================================================
+
+def count_lines(filename)
+ lines = 0
+ codelines = 0
+ open(filename) { |f|
+ f.each do |line|
+ lines += 1
+ next if line =~ /^\s*$/
+ next if line =~ /^\s*#/
+ codelines += 1
+ end
+ }
+ [lines, codelines]
+end
+
+def show_line(msg, lines, loc)
+ printf "%6s %6s %s\n", lines.to_s, loc.to_s, msg
+end
+
+desc "Count lines in the main rake file"
+task :lines do
+ total_lines = 0
+ total_code = 0
+ show_line("File Name", "LINES", "LOC")
+ SRC_RB.each do |fn|
+ lines, codelines = count_lines(fn)
+ show_line(fn, lines, codelines)
+ total_lines += lines
+ total_code += codelines
+ end
+ show_line("TOTAL", total_lines, total_code)
+end
+
+# Define an optional publish target in an external file. If the
+# publish.rf file is not found, the publish targets won't be defined.
+
+load "publish.rf" if File.exist? "publish.rf"
+
+# Support Tasks ------------------------------------------------------
+
+RUBY_FILES = FileList['**/*.rb'].exclude('pkg')
+
+desc "Look for TODO and FIXME tags in the code"
+task :todo do
+ RUBY_FILES.egrep(/#.*(FIXME|TODO|TBD)/)
+end
+
+desc "List all ruby files"
+task :rubyfiles do
+ puts RUBY_FILES
+ puts FileList['bin/*'].exclude('bin/*.rb')
+end
+task :rf => :rubyfiles
+
+# --------------------------------------------------------------------
+# Creating a release
+
+def plugin(plugin_name)
+ require "rake/plugins/#{plugin_name}"
+end
+
+task :noop
+#plugin "release_manager"
+
+desc "Make a new release"
+task :release, [:rel, :reuse, :reltest] => [
+ :prerelease,
+ :clobber,
+ :test,
+ :update_version,
+ :package,
+ :tag
+ ] do
+ announce
+ announce "**************************************************************"
+ announce "* Release #{$package_version} Complete."
+ announce "* Packages ready to upload."
+ announce "**************************************************************"
+ announce
+end
+
+# Validate that everything is ready to go for a release.
+task :prerelease, :rel, :reuse, :reltest do |t, args|
+ $package_version = args.rel
+ announce
+ announce "**************************************************************"
+ announce "* Making RubyGem Release #{$package_version}"
+ announce "* (current version #{CURRENT_VERSION})"
+ announce "**************************************************************"
+ announce
+
+ # Is a release number supplied?
+ unless args.rel
+ fail "Usage: rake release[X.Y.Z] [REUSE=tag_suffix]"
+ end
+
+ # Is the release different than the current release.
+ # (or is REUSE set?)
+ if $package_version == CURRENT_VERSION && ! args.reuse
+ fail "Current version is #{$package_version}, must specify REUSE=tag_suffix to reuse version"
+ end
+
+ # Are all source files checked in?
+ if args.reltest
+ announce "Release Task Testing, skipping checked-in file test"
+ else
+ announce "Checking for unchecked-in files..."
+ data = `svn st`
+ unless data =~ /^$/
+ abort "svn status is not clean ... do you have unchecked-in files?"
+ end
+ announce "No outstanding checkins found ... OK"
+ end
+end
+
+task :update_version, [:rel, :reuse, :reltest] => [:prerelease] do |t, args|
+ if args.rel == CURRENT_VERSION
+ announce "No version change ... skipping version update"
+ else
+ announce "Updating Rake version to #{args.rel}"
+ open("lib/rake.rb") do |rakein|
+ open("lib/rake.rb.new", "w") do |rakeout|
+ rakein.each do |line|
+ if line =~ /^RAKEVERSION\s*=\s*/
+ rakeout.puts "RAKEVERSION = '#{args.rel}'"
+ else
+ rakeout.puts line
+ end
+ end
+ end
+ end
+ mv "lib/rake.rb.new", "lib/rake.rb"
+ if args.reltest
+ announce "Release Task Testing, skipping commiting of new version"
+ else
+ sh %{svn commit -m "Updated to version #{args.rel}" lib/rake.rb} # "
+ end
+ end
+end
+
+desc "Tag all the CVS files with the latest release number (REL=x.y.z)"
+task :tag, [:rel, :reuse, :reltest] => [:prerelease] do |t, args|
+ reltag = "REL_#{args.rel.gsub(/\./, '_')}"
+ reltag << args.reuse.gsub(/\./, '_') if args.reuse
+ announce "Tagging Repository with [#{reltag}]"
+ if args.reltest
+ announce "Release Task Testing, skipping CVS tagging"
+ else
+ sh %{svn copy svn+ssh://rubyforge.org/var/svn/rake/trunk svn+ssh://rubyforge.org/var/svn/rake/tags/#{reltag} -m 'Commiting release #{reltag}'} ###'
+ end
+end
+
+# Require experimental XForge/Metaproject support.
+
+load 'xforge.rf' if File.exist?('xforge.rf')
+
+desc "Where is the current directory. This task displays\nthe current rake directory"
+task :where_am_i do
+ puts Rake.original_dir
+end
+
+task :failure => :really_fail
+task :really_fail do
+ fail "oops"
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/TODO b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/TODO
new file mode 100755
index 00000000000..d0482e22c57
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/TODO
@@ -0,0 +1,20 @@
+= Rake Project -- To Do List
+
+Send suggestions for this list to mailto:jim@weirichhouse.org or on
+the rake-devel@rubyforge.org mailing list.
+
+=== To Do
+* Need a nice API for accessing tasks in namespaces, namespaces in an app, etc.
+* Provide a way to disable -w warning mode.
+* Define a set of default rules that work in the absence of any Rakefile
+* What about cyclic dependencies?
+* Java support utilities
+* Installation support utilities
+ * Check out installpkg.rb
+* Autogenerate Dependencies
+* Rules should apply to existing tasks if no actions are defined.
+* How to create multiple package tasks without task name collision?
+* Trap "ln -s" commands that fail and use "cp" instead (SMB mounted
+ drives have problems with "ln -s".
+
+(moved DONE list to CHANGES file)
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/install.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/install.rb
new file mode 100755
index 00000000000..f5e84c391cc
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/install.rb
@@ -0,0 +1,90 @@
+require 'rbconfig'
+require 'find'
+require 'fileutils'
+
+include RbConfig
+
+$ruby = CONFIG['ruby_install_name']
+
+##
+# Install a binary file. We patch in on the way through to
+# insert a #! line. If this is a Unix install, we name
+# the command (for example) 'rake' and let the shebang line
+# handle running it. Under windows, we add a '.rb' extension
+# and let file associations to their stuff
+#
+
+def installBIN(from, opfile)
+
+ tmp_dir = nil
+ for t in [".", "/tmp", "c:/temp", $bindir]
+ stat = File.stat(t) rescue next
+ if stat.directory? and stat.writable?
+ tmp_dir = t
+ break
+ end
+ end
+
+ fail "Cannot find a temporary directory" unless tmp_dir
+ tmp_file = File.join(tmp_dir, "_tmp")
+
+ File.open(from) do |ip|
+ File.open(tmp_file, "w") do |op|
+ ruby = File.join($realbindir, $ruby)
+ op.puts "#!#{ruby} -w"
+ op.write ip.read
+ end
+ end
+
+ opfile += ".rb" if CONFIG["target_os"] =~ /mswin/i
+ FileUtils.install(tmp_file, File.join($bindir, opfile),
+ {:mode => 0755, :verbose => true})
+ File.unlink(tmp_file)
+end
+
+$sitedir = CONFIG["sitelibdir"]
+unless $sitedir
+ version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
+ $libdir = File.join(CONFIG["libdir"], "ruby", version)
+ $sitedir = $:.find {|x| x =~ /site_ruby/}
+ if !$sitedir
+ $sitedir = File.join($libdir, "site_ruby")
+ elsif $sitedir !~ Regexp.quote(version)
+ $sitedir = File.join($sitedir, version)
+ end
+end
+
+$bindir = CONFIG["bindir"]
+
+$realbindir = $bindir
+
+bindir = CONFIG["bindir"]
+if (destdir = ENV['DESTDIR'])
+ $bindir = destdir + $bindir
+ $sitedir = destdir + $sitedir
+
+ FileUtils.mkdir_p($bindir)
+ FileUtils.mkdir_p($sitedir)
+end
+
+rake_dest = File.join($sitedir, "rake")
+FileUtils.mkdir_p(rake_dest, {:verbose => true})
+File.chmod(0755, rake_dest)
+
+# The library files
+
+files = Dir.chdir('lib') { Dir['**/*.rb'] }
+
+for fn in files
+ fn_dir = File.dirname(fn)
+ target_dir = File.join($sitedir, fn_dir)
+ if ! File.exist?(target_dir)
+ FileUtils.mkdir_p(target_dir)
+ end
+ FileUtils.install(File.join('lib', fn), File.join($sitedir, fn),
+ {:mode => 0644, :verbose => true})
+end
+
+# and the executable
+
+installBIN("bin/rake", "rake")
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake.rb
new file mode 100755
index 00000000000..fc1a6a51653
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake.rb
@@ -0,0 +1,69 @@
+#--
+
+# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com)
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#++
+
+require 'rake/version'
+
+# :stopdoc:
+RAKEVERSION = Rake::VERSION
+# :startdoc:
+
+require 'rbconfig'
+require 'fileutils'
+require 'singleton'
+require 'monitor'
+require 'optparse'
+require 'ostruct'
+
+require 'rake/ext/module'
+require 'rake/ext/string'
+require 'rake/ext/time'
+
+require 'rake/win32'
+
+require 'rake/task_argument_error'
+require 'rake/rule_recursion_overflow_error'
+require 'rake/rake_module'
+require 'rake/pseudo_status'
+require 'rake/task_arguments'
+require 'rake/invocation_chain'
+require 'rake/task'
+require 'rake/file_task'
+require 'rake/file_creation_task'
+require 'rake/multi_task'
+require 'rake/dsl_definition'
+require 'rake/file_utils_ext'
+require 'rake/file_list'
+require 'rake/default_loader'
+require 'rake/early_time'
+require 'rake/name_space'
+require 'rake/task_manager'
+require 'rake/application'
+
+$trace = false
+
+# :stopdoc:
+#
+# Some top level Constants.
+
+FileList = Rake::FileList
+RakeFileUtils = Rake::FileUtilsExt
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/alt_system.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/alt_system.rb
new file mode 100755
index 00000000000..05af19863ae
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/alt_system.rb
@@ -0,0 +1,109 @@
+#
+# Copyright (c) 2008 James M. Lawrence
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+#
+
+require 'rbconfig'
+
+#
+# Alternate implementations of system() and backticks `` on Windows
+# for ruby-1.8 and earlier.
+#
+module Rake::AltSystem
+ WINDOWS = RbConfig::CONFIG["host_os"] =~
+ %r!(msdos|mswin|djgpp|mingw|[Ww]indows)!
+
+ class << self
+ def define_module_function(name, &block)
+ define_method(name, &block)
+ module_function(name)
+ end
+ end
+
+ if WINDOWS and RUBY_VERSION < "1.9.0"
+ RUNNABLE_EXTS = %w[com exe bat cmd]
+ RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i
+
+ define_module_function :kernel_system, &Kernel.method(:system)
+ define_module_function :kernel_backticks, &Kernel.method(:'`')
+
+ module_function
+
+ def repair_command(cmd)
+ "call " + (
+ if cmd =~ %r!\A\s*\".*?\"!
+ # already quoted
+ cmd
+ elsif match = cmd.match(%r!\A\s*(\S+)!)
+ if match[1] =~ %r!/!
+ # avoid x/y.bat interpretation as x with option /y
+ %Q!"#{match[1]}"! + match.post_match
+ else
+ # a shell command will fail if quoted
+ cmd
+ end
+ else
+ # empty or whitespace
+ cmd
+ end
+ )
+ end
+
+ def find_runnable(file)
+ if file =~ RUNNABLE_PATTERN
+ file
+ else
+ RUNNABLE_EXTS.each { |ext|
+ if File.exist?(test = "#{file}.#{ext}")
+ return test
+ end
+ }
+ nil
+ end
+ end
+
+ def system(cmd, *args)
+ repaired = (
+ if args.empty?
+ [repair_command(cmd)]
+ elsif runnable = find_runnable(cmd)
+ [File.expand_path(runnable), *args]
+ else
+ # non-existent file
+ [cmd, *args]
+ end
+ )
+ kernel_system(*repaired)
+ end
+
+ def backticks(cmd)
+ kernel_backticks(repair_command(cmd))
+ end
+
+ define_module_function :'`', &method(:backticks)
+ else
+ # Non-Windows or ruby-1.9+: same as Kernel versions
+ define_module_function :system, &Kernel.method(:system)
+ define_module_function :backticks, &Kernel.method(:'`')
+ define_module_function :'`', &Kernel.method(:'`')
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/application.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/application.rb
new file mode 100755
index 00000000000..2079fb9be66
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/application.rb
@@ -0,0 +1,595 @@
+require 'shellwords'
+require 'optparse'
+
+require 'rake/task_manager'
+require 'rake/win32'
+
+module Rake
+
+ ######################################################################
+ # Rake main application object. When invoking +rake+ from the
+ # command line, a Rake::Application object is created and run.
+ #
+ class Application
+ include TaskManager
+
+ # The name of the application (typically 'rake')
+ attr_reader :name
+
+ # The original directory where rake was invoked.
+ attr_reader :original_dir
+
+ # Name of the actual rakefile used.
+ attr_reader :rakefile
+
+ # Number of columns on the terminal
+ attr_accessor :terminal_columns
+
+ # List of the top level task names (task names from the command line).
+ attr_reader :top_level_tasks
+
+ DEFAULT_RAKEFILES = ['rakefile', 'Rakefile', 'rakefile.rb', 'Rakefile.rb'].freeze
+
+ # Initialize a Rake::Application object.
+ def initialize
+ super
+ @name = 'rake'
+ @rakefiles = DEFAULT_RAKEFILES.dup
+ @rakefile = nil
+ @pending_imports = []
+ @imported = []
+ @loaders = {}
+ @default_loader = Rake::DefaultLoader.new
+ @original_dir = Dir.pwd
+ @top_level_tasks = []
+ add_loader('rb', DefaultLoader.new)
+ add_loader('rf', DefaultLoader.new)
+ add_loader('rake', DefaultLoader.new)
+ @tty_output = STDOUT.tty?
+ @terminal_columns = ENV['RAKE_COLUMNS'].to_i
+ end
+
+ # Run the Rake application. The run method performs the following
+ # three steps:
+ #
+ # * Initialize the command line options (+init+).
+ # * Define the tasks (+load_rakefile+).
+ # * Run the top level tasks (+run_tasks+).
+ #
+ # If you wish to build a custom rake command, you should call
+ # +init+ on your application. Then define any tasks. Finally,
+ # call +top_level+ to run your top level tasks.
+ def run
+ standard_exception_handling do
+ init
+ load_rakefile
+ top_level
+ end
+ end
+
+ # Initialize the command line parameters and app name.
+ def init(app_name='rake')
+ standard_exception_handling do
+ @name = app_name
+ handle_options
+ collect_tasks
+ end
+ end
+
+ # Find the rakefile and then load it and any pending imports.
+ def load_rakefile
+ standard_exception_handling do
+ raw_load_rakefile
+ end
+ end
+
+ # Run the top level tasks of a Rake application.
+ def top_level
+ standard_exception_handling do
+ if options.show_tasks
+ display_tasks_and_comments
+ elsif options.show_prereqs
+ display_prerequisites
+ else
+ top_level_tasks.each { |task_name| invoke_task(task_name) }
+ end
+ end
+ end
+
+ # Add a loader to handle imported files ending in the extension
+ # +ext+.
+ def add_loader(ext, loader)
+ ext = ".#{ext}" unless ext =~ /^\./
+ @loaders[ext] = loader
+ end
+
+ # Application options from the command line
+ def options
+ @options ||= OpenStruct.new
+ end
+
+ # private ----------------------------------------------------------------
+
+ def invoke_task(task_string)
+ name, args = parse_task_string(task_string)
+ t = self[name]
+ t.invoke(*args)
+ end
+
+ def parse_task_string(string)
+ if string =~ /^([^\[]+)(\[(.*)\])$/
+ name = $1
+ args = $3.split(/\s*,\s*/)
+ else
+ name = string
+ args = []
+ end
+ [name, args]
+ end
+
+ # Provide standard exception handling for the given block.
+ def standard_exception_handling
+ begin
+ yield
+ rescue SystemExit => ex
+ # Exit silently with current status
+ raise
+ rescue OptionParser::InvalidOption => ex
+ $stderr.puts ex.message
+ exit(false)
+ rescue Exception => ex
+ # Exit with error message
+ display_error_message(ex)
+ exit(false)
+ end
+ end
+
+ # Display the error message that caused the exception.
+ def display_error_message(ex)
+ $stderr.puts "#{name} aborted!"
+ $stderr.puts ex.message
+ if options.trace
+ $stderr.puts ex.backtrace.join("\n")
+ else
+ $stderr.puts rakefile_location(ex.backtrace)
+ end
+ $stderr.puts "Tasks: #{ex.chain}" if has_chain?(ex)
+ $stderr.puts "(See full trace by running task with --trace)" unless options.trace
+ end
+
+ # Warn about deprecated usage.
+ #
+ # Example:
+ # Rake.application.deprecate("import", "Rake.import", caller.first)
+ #
+ def deprecate(old_usage, new_usage, call_site)
+ return if options.ignore_deprecate
+ $stderr.puts "WARNING: '#{old_usage}' is deprecated. " +
+ "Please use '#{new_usage}' instead.\n" +
+ " at #{call_site}"
+ end
+
+ # Does the exception have a task invocation chain?
+ def has_chain?(exception)
+ exception.respond_to?(:chain) && exception.chain
+ end
+ private :has_chain?
+
+ # True if one of the files in RAKEFILES is in the current directory.
+ # If a match is found, it is copied into @rakefile.
+ def have_rakefile
+ @rakefiles.each do |fn|
+ if File.exist?(fn)
+ others = Dir.glob(fn, File::FNM_CASEFOLD)
+ return others.size == 1 ? others.first : fn
+ elsif fn == ''
+ return fn
+ end
+ end
+ return nil
+ end
+
+ # True if we are outputting to TTY, false otherwise
+ def tty_output?
+ @tty_output
+ end
+
+ # Override the detected TTY output state (mostly for testing)
+ def tty_output=( tty_output_state )
+ @tty_output = tty_output_state
+ end
+
+ # We will truncate output if we are outputting to a TTY or if we've been
+ # given an explicit column width to honor
+ def truncate_output?
+ tty_output? || @terminal_columns.nonzero?
+ end
+
+ # Display the tasks and comments.
+ def display_tasks_and_comments
+ displayable_tasks = tasks.select { |t|
+ t.comment && t.name =~ options.show_task_pattern
+ }
+ case options.show_tasks
+ when :tasks
+ width = displayable_tasks.collect { |t| t.name_with_args.length }.max || 10
+ max_column = truncate_output? ? terminal_width - name.size - width - 7 : nil
+
+ displayable_tasks.each do |t|
+ printf "#{name} %-#{width}s # %s\n",
+ t.name_with_args, max_column ? truncate(t.comment, max_column) : t.comment
+ end
+ when :describe
+ displayable_tasks.each do |t|
+ puts "#{name} #{t.name_with_args}"
+ t.full_comment.split("\n").each do |line|
+ puts " #{line}"
+ end
+ puts
+ end
+ when :lines
+ displayable_tasks.each do |t|
+ t.locations.each do |loc|
+ printf "#{name} %-30s %s\n",t.name_with_args, loc
+ end
+ end
+ else
+ fail "Unknown show task mode: '#{options.show_tasks}'"
+ end
+ end
+
+ def terminal_width
+ if @terminal_columns.nonzero?
+ result = @terminal_columns
+ else
+ result = unix? ? dynamic_width : 80
+ end
+ (result < 10) ? 80 : result
+ rescue
+ 80
+ end
+
+ # Calculate the dynamic width of the
+ def dynamic_width
+ @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput)
+ end
+
+ def dynamic_width_stty
+ %x{stty size 2>/dev/null}.split[1].to_i
+ end
+
+ def dynamic_width_tput
+ %x{tput cols 2>/dev/null}.to_i
+ end
+
+ def unix?
+ RbConfig::CONFIG['host_os'] =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
+ end
+
+ def windows?
+ Win32.windows?
+ end
+
+ def truncate(string, width)
+ if string.length <= width
+ string
+ else
+ ( string[0, width-3] || "" ) + "..."
+ end
+ end
+
+ # Display the tasks and prerequisites
+ def display_prerequisites
+ tasks.each do |t|
+ puts "#{name} #{t.name}"
+ t.prerequisites.each { |pre| puts " #{pre}" }
+ end
+ end
+
+ # A list of all the standard options used in rake, suitable for
+ # passing to OptionParser.
+ def standard_rake_options
+ [
+ ['--classic-namespace', '-C', "Put Task and FileTask in the top level namespace",
+ lambda { |value|
+ require 'rake/classic_namespace'
+ options.classic_namespace = true
+ }
+ ],
+ ['--describe', '-D [PATTERN]', "Describe the tasks (matching optional PATTERN), then exit.",
+ lambda { |value|
+ options.show_tasks = :describe
+ options.show_task_pattern = Regexp.new(value || '')
+ TaskManager.record_task_metadata = true
+ }
+ ],
+ ['--dry-run', '-n', "Do a dry run without executing actions.",
+ lambda { |value|
+ Rake.verbose(true)
+ Rake.nowrite(true)
+ options.dryrun = true
+ options.trace = true
+ }
+ ],
+ ['--execute', '-e CODE', "Execute some Ruby code and exit.",
+ lambda { |value|
+ eval(value)
+ exit
+ }
+ ],
+ ['--execute-print', '-p CODE', "Execute some Ruby code, print the result, then exit.",
+ lambda { |value|
+ puts eval(value)
+ exit
+ }
+ ],
+ ['--execute-continue', '-E CODE',
+ "Execute some Ruby code, then continue with normal task processing.",
+ lambda { |value| eval(value) }
+ ],
+ ['--libdir', '-I LIBDIR', "Include LIBDIR in the search path for required modules.",
+ lambda { |value| $:.push(value) }
+ ],
+ ['--no-search', '--nosearch', '-N', "Do not search parent directories for the Rakefile.",
+ lambda { |value| options.nosearch = true }
+ ],
+ ['--prereqs', '-P', "Display the tasks and dependencies, then exit.",
+ lambda { |value| options.show_prereqs = true }
+ ],
+ ['--quiet', '-q', "Do not log messages to standard output.",
+ lambda { |value| Rake.verbose(false) }
+ ],
+ ['--rakefile', '-f [FILE]', "Use FILE as the rakefile.",
+ lambda { |value|
+ value ||= ''
+ @rakefiles.clear
+ @rakefiles << value
+ }
+ ],
+ ['--rakelibdir', '--rakelib', '-R RAKELIBDIR',
+ "Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib')",
+ # HACK Use File::PATH_SEPARATOR
+ lambda { |value| options.rakelib = value.split(':') }
+ ],
+ ['--require', '-r MODULE', "Require MODULE before executing rakefile.",
+ lambda { |value|
+ begin
+ require value
+ rescue LoadError => ex
+ begin
+ rake_require value
+ rescue LoadError
+ raise ex
+ end
+ end
+ }
+ ],
+ ['--rules', "Trace the rules resolution.",
+ lambda { |value| options.trace_rules = true }
+ ],
+ ['--silent', '-s', "Like --quiet, but also suppresses the 'in directory' announcement.",
+ lambda { |value|
+ Rake.verbose(false)
+ options.silent = true
+ }
+ ],
+ ['--system', '-g',
+ "Using system wide (global) rakefiles (usually '~/.rake/*.rake').",
+ lambda { |value| options.load_system = true }
+ ],
+ ['--no-system', '--nosystem', '-G',
+ "Use standard project Rakefile search paths, ignore system wide rakefiles.",
+ lambda { |value| options.ignore_system = true }
+ ],
+ ['--tasks', '-T [PATTERN]', "Display the tasks (matching optional PATTERN) with descriptions, then exit.",
+ lambda { |value|
+ options.show_tasks = :tasks
+ options.show_task_pattern = Regexp.new(value || '')
+ Rake::TaskManager.record_task_metadata = true
+ }
+ ],
+ ['--trace', '-t', "Turn on invoke/execute tracing, enable full backtrace.",
+ lambda { |value|
+ options.trace = true
+ Rake.verbose(true)
+ }
+ ],
+ ['--verbose', '-v', "Log message to standard output.",
+ lambda { |value| Rake.verbose(true) }
+ ],
+ ['--version', '-V', "Display the program version.",
+ lambda { |value|
+ puts "rake, version #{RAKEVERSION}"
+ exit
+ }
+ ],
+ ['--where', '-W [PATTERN]', "Describe the tasks (matching optional PATTERN), then exit.",
+ lambda { |value|
+ options.show_tasks = :lines
+ options.show_task_pattern = Regexp.new(value || '')
+ Rake::TaskManager.record_task_metadata = true
+ }
+ ],
+ ['--no-deprecation-warnings', '-X', "Disable the deprecation warnings.",
+ lambda { |value|
+ options.ignore_deprecate = true
+ }
+ ],
+ ]
+ end
+
+ # Read and handle the command line options.
+ def handle_options
+ options.rakelib = ['rakelib']
+
+ OptionParser.new do |opts|
+ opts.banner = "rake [-f rakefile] {options} targets..."
+ opts.separator ""
+ opts.separator "Options are ..."
+
+ opts.on_tail("-h", "--help", "-H", "Display this help message.") do
+ puts opts
+ exit
+ end
+
+ standard_rake_options.each { |args| opts.on(*args) }
+ opts.environment('RAKEOPT')
+ end.parse!
+
+ # If class namespaces are requested, set the global options
+ # according to the values in the options structure.
+ if options.classic_namespace
+ $show_tasks = options.show_tasks
+ $show_prereqs = options.show_prereqs
+ $trace = options.trace
+ $dryrun = options.dryrun
+ $silent = options.silent
+ end
+ end
+
+ # Similar to the regular Ruby +require+ command, but will check
+ # for *.rake files in addition to *.rb files.
+ def rake_require(file_name, paths=$LOAD_PATH, loaded=$")
+ fn = file_name + ".rake"
+ return false if loaded.include?(fn)
+ paths.each do |path|
+ full_path = File.join(path, fn)
+ if File.exist?(full_path)
+ Rake.load_rakefile(full_path)
+ loaded << fn
+ return true
+ end
+ end
+ fail LoadError, "Can't find #{file_name}"
+ end
+
+ def find_rakefile_location
+ here = Dir.pwd
+ while ! (fn = have_rakefile)
+ Dir.chdir("..")
+ if Dir.pwd == here || options.nosearch
+ return nil
+ end
+ here = Dir.pwd
+ end
+ [fn, here]
+ ensure
+ Dir.chdir(Rake.original_dir)
+ end
+
+ def print_rakefile_directory(location)
+ $stderr.puts "(in #{Dir.pwd})" unless
+ options.silent or original_dir == location
+ end
+
+ def raw_load_rakefile # :nodoc:
+ rakefile, location = find_rakefile_location
+ if (! options.ignore_system) &&
+ (options.load_system || rakefile.nil?) &&
+ system_dir && File.directory?(system_dir)
+ print_rakefile_directory(location)
+ glob("#{system_dir}/*.rake") do |name|
+ add_import name
+ end
+ else
+ fail "No Rakefile found (looking for: #{@rakefiles.join(', ')})" if
+ rakefile.nil?
+ @rakefile = rakefile
+ Dir.chdir(location)
+ print_rakefile_directory(location)
+ $rakefile = @rakefile if options.classic_namespace
+ Rake.load_rakefile(File.expand_path(@rakefile)) if @rakefile && @rakefile != ''
+ options.rakelib.each do |rlib|
+ glob("#{rlib}/*.rake") do |name|
+ add_import name
+ end
+ end
+ end
+ load_imports
+ end
+
+ def glob(path, &block)
+ Dir[path.gsub("\\", '/')].each(&block)
+ end
+ private :glob
+
+ # The directory path containing the system wide rakefiles.
+ def system_dir
+ @system_dir ||=
+ begin
+ if ENV['RAKE_SYSTEM']
+ ENV['RAKE_SYSTEM']
+ else
+ standard_system_dir
+ end
+ end
+ end
+
+ # The standard directory containing system wide rake files.
+ if Win32.windows?
+ def standard_system_dir #:nodoc:
+ Win32.win32_system_dir
+ end
+ else
+ def standard_system_dir #:nodoc:
+ File.join(File.expand_path('~'), '.rake')
+ end
+ end
+ private :standard_system_dir
+
+ # Collect the list of tasks on the command line. If no tasks are
+ # given, return a list containing only the default task.
+ # Environmental assignments are processed at this time as well.
+ def collect_tasks
+ @top_level_tasks = []
+ ARGV.each do |arg|
+ if arg =~ /^(\w+)=(.*)$/
+ ENV[$1] = $2
+ else
+ @top_level_tasks << arg unless arg =~ /^-/
+ end
+ end
+ @top_level_tasks.push("default") if @top_level_tasks.size == 0
+ end
+
+ # Add a file to the list of files to be imported.
+ def add_import(fn)
+ @pending_imports << fn
+ end
+
+ # Load the pending list of imported files.
+ def load_imports
+ while fn = @pending_imports.shift
+ next if @imported.member?(fn)
+ if fn_task = lookup(fn)
+ fn_task.invoke
+ end
+ ext = File.extname(fn)
+ loader = @loaders[ext] || @default_loader
+ loader.load(fn)
+ @imported << fn
+ end
+ end
+
+ # Warn about deprecated use of top level constant names.
+ def const_warning(const_name)
+ @const_warning ||= false
+ if ! @const_warning
+ $stderr.puts %{WARNING: Deprecated reference to top-level constant '#{const_name}' } +
+ %{found at: #{rakefile_location}} # '
+ $stderr.puts %{ Use --classic-namespace on rake command}
+ $stderr.puts %{ or 'require "rake/classic_namespace"' in Rakefile}
+ end
+ @const_warning = true
+ end
+
+ def rakefile_location backtrace = caller
+ backtrace.map { |t| t[/([^:]+):/,1] }
+
+ re = /^#{@rakefile}$/
+ re = /#{re.source}/i if windows?
+
+ backtrace.find { |str| str =~ re } || ''
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb
new file mode 100755
index 00000000000..6e71012da46
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb
@@ -0,0 +1,11 @@
+# The following classes used to be in the top level namespace.
+# Loading this file enables compatibility with older Rakefile that
+# referenced Task from the top level.
+
+warn "WARNING: Classic namespaces are deprecated and will be removed from future versions of Rake."
+# :stopdoc:
+Task = Rake::Task
+FileTask = Rake::FileTask
+FileCreationTask = Rake::FileCreationTask
+RakeApp = Rake::Application
+# :startdoc:
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/clean.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/clean.rb
new file mode 100755
index 00000000000..5c9cbcdb246
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/clean.rb
@@ -0,0 +1,32 @@
+# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and
+# two rake tasks (:clean and :clobber).
+#
+# [:clean] Clean up the project by deleting scratch files and backup
+# files. Add files to the CLEAN file list to have the :clean
+# target handle them.
+#
+# [:clobber] Clobber all generated and non-source files in a project.
+# The task depends on :clean, so all the clean files will
+# be deleted as well as files in the CLOBBER file list.
+# The intent of this task is to return a project to its
+# pristine, just unpacked state.
+
+require 'rake'
+
+# :stopdoc:
+CLEAN = Rake::FileList["**/*~", "**/*.bak", "**/core"]
+CLEAN.clear_exclude.exclude { |fn|
+ fn.pathmap("%f") == 'core' && File.directory?(fn)
+}
+
+desc "Remove any temporary products."
+task :clean do
+ CLEAN.each { |fn| rm_r fn rescue nil }
+end
+
+CLOBBER = Rake::FileList.new
+
+desc "Remove any generated file."
+task :clobber => [:clean] do
+ CLOBBER.each { |fn| rm_r fn rescue nil }
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/cloneable.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/cloneable.rb
new file mode 100755
index 00000000000..19c780bff6c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/cloneable.rb
@@ -0,0 +1,25 @@
+module Rake
+ # ##########################################################################
+ # Mixin for creating easily cloned objects.
+ #
+ module Cloneable
+ # Clone an object by making a new object and setting all the instance
+ # variables to the same values.
+ def dup
+ sibling = self.class.new
+ instance_variables.each do |ivar|
+ value = self.instance_variable_get(ivar)
+ new_value = value.clone rescue value
+ sibling.instance_variable_set(ivar, new_value)
+ end
+ sibling.taint if tainted?
+ sibling
+ end
+
+ def clone
+ sibling = dup
+ sibling.freeze if frozen?
+ sibling
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb
new file mode 100755
index 00000000000..69952a08081
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb
@@ -0,0 +1,21 @@
+module Rake
+
+ # Manage several publishers as a single entity.
+ class CompositePublisher
+ def initialize
+ @publishers = []
+ end
+
+ # Add a publisher to the composite.
+ def add(pub)
+ @publishers << pub
+ end
+
+ # Upload all the individual publishers.
+ def upload
+ @publishers.each { |p| p.upload }
+ end
+ end
+
+end
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb
new file mode 100755
index 00000000000..78420c74128
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb
@@ -0,0 +1,150 @@
+# = Tools for FTP uploading.
+#
+# This file is still under development and is not released for general
+# use.
+
+require 'date'
+require 'net/ftp'
+
+module Rake # :nodoc:
+
+ ####################################################################
+ # Note: Not released for general use.
+ class FtpFile
+ attr_reader :name, :size, :owner, :group, :time
+
+ def self.date
+ @date_class ||= Date
+ end
+
+ def self.time
+ @time_class ||= Time
+ end
+
+ def initialize(path, entry)
+ @path = path
+ @mode, _, @owner, @group, size, d1, d2, d3, @name = entry.split(' ')
+ @size = size.to_i
+ @time = determine_time(d1, d2, d3)
+ end
+
+ def path
+ File.join(@path, @name)
+ end
+
+ def directory?
+ @mode[0] == ?d
+ end
+
+ def mode
+ parse_mode(@mode)
+ end
+
+ def symlink?
+ @mode[0] == ?l
+ end
+
+ private # --------------------------------------------------------
+
+ def parse_mode(m)
+ result = 0
+ (1..9).each do |i|
+ result = 2*result + ((m[i]==?-) ? 0 : 1)
+ end
+ result
+ end
+
+ def determine_time(d1, d2, d3)
+ now = self.class.time.now
+ if /:/ =~ d3
+ result = Time.parse("#{d1} #{d2} #{now.year} #{d3}")
+ if result > now
+ result = Time.parse("#{d1} #{d2} #{now.year-1} #{d3}")
+ end
+ else
+ result = Time.parse("#{d1} #{d2} #{d3}")
+ end
+ result
+# elements = ParseDate.parsedate("#{d1} #{d2} #{d3}")
+# if elements[0].nil?
+# today = self.class.date.today
+# if elements[1] > today.month
+# elements[0] = today.year - 1
+# else
+# elements[0] = today.year
+# end
+# end
+# elements = elements.collect { |el| el.nil? ? 0 : el }
+# Time.mktime(*elements[0,7])
+ end
+ end
+
+ ####################################################################
+ # Manage the uploading of files to an FTP account.
+ class FtpUploader
+
+ # Log uploads to standard output when true.
+ attr_accessor :verbose
+
+ class << FtpUploader
+ # Create an uploader and pass it to the given block as +up+.
+ # When the block is complete, close the uploader.
+ def connect(path, host, account, password)
+ up = self.new(path, host, account, password)
+ begin
+ yield(up)
+ ensure
+ up.close
+ end
+ end
+ end
+
+ # Create an FTP uploader targeting the directory +path+ on +host+
+ # using the given account and password. +path+ will be the root
+ # path of the uploader.
+ def initialize(path, host, account, password)
+ @created = Hash.new
+ @path = path
+ @ftp = Net::FTP.new(host, account, password)
+ makedirs(@path)
+ @ftp.chdir(@path)
+ end
+
+ # Create the directory +path+ in the uploader root path.
+ def makedirs(path)
+ route = []
+ File.split(path).each do |dir|
+ route << dir
+ current_dir = File.join(route)
+ if @created[current_dir].nil?
+ @created[current_dir] = true
+ $stderr.puts "Creating Directory #{current_dir}" if @verbose
+ @ftp.mkdir(current_dir) rescue nil
+ end
+ end
+ end
+
+ # Upload all files matching +wildcard+ to the uploader's root
+ # path.
+ def upload_files(wildcard)
+ Dir[wildcard].each do |fn|
+ upload(fn)
+ end
+ end
+
+ # Close the uploader.
+ def close
+ @ftp.close
+ end
+
+ private # --------------------------------------------------------
+
+ # Upload a single file to the uploader's root path.
+ def upload(file)
+ $stderr.puts "Uploading #{file}" if @verbose
+ dir = File.dirname(file)
+ makedirs(dir)
+ @ftp.putbinaryfile(file, file) unless File.directory?(file)
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb
new file mode 100755
index 00000000000..8b11edb59c4
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb
@@ -0,0 +1,73 @@
+# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com)
+# All rights reserved.
+
+# :stopdoc:
+
+# Configuration information about an upload host system.
+# name :: Name of host system.
+# webdir :: Base directory for the web information for the
+# application. The application name (APP) is appended to
+# this directory before using.
+# pkgdir :: Directory on the host system where packages can be
+# placed.
+HostInfo = Struct.new(:name, :webdir, :pkgdir)
+
+# :startdoc:
+
+# Manage several publishers as a single entity.
+class CompositePublisher
+ def initialize
+ @publishers = []
+ end
+
+ # Add a publisher to the composite.
+ def add(pub)
+ @publishers << pub
+ end
+
+ # Upload all the individual publishers.
+ def upload
+ @publishers.each { |p| p.upload }
+ end
+end
+
+# Publish an entire directory to an existing remote directory using
+# SSH.
+class SshDirPublisher
+ def initialize(host, remote_dir, local_dir)
+ @host = host
+ @remote_dir = remote_dir
+ @local_dir = local_dir
+ end
+
+ def upload
+ run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}}
+ end
+end
+
+# Publish an entire directory to a fresh remote directory using SSH.
+class SshFreshDirPublisher < SshDirPublisher
+ def upload
+ run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil
+ run %{ssh #{@host} mkdir #{@remote_dir}}
+ super
+ end
+end
+
+# Publish a list of files to an existing remote directory.
+class SshFilePublisher
+ # Create a publisher using the give host information.
+ def initialize(host, remote_dir, local_dir, *files)
+ @host = host
+ @remote_dir = remote_dir
+ @local_dir = local_dir
+ @files = files
+ end
+
+ # Upload the local directory to the remote directory.
+ def upload
+ @files.each do |fn|
+ run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}}
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb
new file mode 100755
index 00000000000..a4b96936c8d
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb
@@ -0,0 +1,16 @@
+require 'rake/contrib/sshpublisher'
+
+module Rake
+
+ class RubyForgePublisher < SshDirPublisher
+ attr_reader :project, :proj_id, :user
+
+ def initialize(projname, user)
+ super(
+ "#{user}@rubyforge.org",
+ "/var/www/gforge-projects/#{projname}",
+ "html")
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb
new file mode 100755
index 00000000000..bd6adc127e3
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb
@@ -0,0 +1,50 @@
+require 'rake/dsl_definition'
+require 'rake/contrib/compositepublisher'
+
+module Rake
+
+ # Publish an entire directory to an existing remote directory using
+ # SSH.
+ class SshDirPublisher
+ include Rake::DSL
+
+ def initialize(host, remote_dir, local_dir)
+ @host = host
+ @remote_dir = remote_dir
+ @local_dir = local_dir
+ end
+
+ def upload
+ sh %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}}
+ end
+ end
+
+ # Publish an entire directory to a fresh remote directory using SSH.
+ class SshFreshDirPublisher < SshDirPublisher
+ def upload
+ sh %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil
+ sh %{ssh #{@host} mkdir #{@remote_dir}}
+ super
+ end
+ end
+
+ # Publish a list of files to an existing remote directory.
+ class SshFilePublisher
+ include Rake::DSL
+
+ # Create a publisher using the give host information.
+ def initialize(host, remote_dir, local_dir, *files)
+ @host = host
+ @remote_dir = remote_dir
+ @local_dir = local_dir
+ @files = files
+ end
+
+ # Upload the local directory to the remote directory.
+ def upload
+ @files.each do |fn|
+ sh %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}}
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb
new file mode 100755
index 00000000000..41963f1feff
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb
@@ -0,0 +1,191 @@
+warn 'Sys has been deprecated in favor of FileUtils'
+
+#--
+# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com)
+# All rights reserved.
+#++
+#
+begin
+ require 'ftools'
+rescue LoadError
+end
+require 'rbconfig'
+
+######################################################################
+# Sys provides a number of file manipulation tools for the convenience
+# of writing Rakefiles. All commands in this module will announce
+# their activity on standard output if the $verbose flag is set
+# ($verbose = true is the default). You can control this by globally
+# setting $verbose or by using the +verbose+ and +quiet+ methods.
+#
+# Sys has been deprecated in favor of the FileUtils module available
+# in Ruby 1.8.
+#
+module Sys
+ RUBY = RbConfig::CONFIG['ruby_install_name']
+
+ # Install all the files matching +wildcard+ into the +dest_dir+
+ # directory. The permission mode is set to +mode+.
+ def install(wildcard, dest_dir, mode)
+ Dir[wildcard].each do |fn|
+ File.install(fn, dest_dir, mode, $verbose)
+ end
+ end
+
+ # Run the system command +cmd+.
+ def run(cmd)
+ log cmd
+ system(cmd) or fail "Command Failed: [#{cmd}]"
+ end
+
+ # Run a Ruby interpreter with the given arguments.
+ def ruby(*args)
+ run "#{RUBY} #{args.join(' ')}"
+ end
+
+ # Copy a single file from +file_name+ to +dest_file+.
+ def copy(file_name, dest_file)
+ log "Copying file #{file_name} to #{dest_file}"
+ File.copy(file_name, dest_file)
+ end
+
+ # Copy all files matching +wildcard+ into the directory +dest_dir+.
+ def copy_files(wildcard, dest_dir)
+ for_matching_files(wildcard, dest_dir) { |from, to| copy(from, to) }
+ end
+
+ # Link +file_name+ to +dest_file+.
+ def link(file_name, dest_file)
+ log "Linking file #{file_name} to #{dest_file}"
+ File.link(file_name, dest_file)
+ end
+
+ # Link all files matching +wildcard+ into the directory +dest_dir+.
+ def link_files(wildcard, dest_dir)
+ for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) }
+ end
+
+ # Symlink +file_name+ to +dest_file+.
+ def symlink(file_name, dest_file)
+ log "Symlinking file #{file_name} to #{dest_file}"
+ File.symlink(file_name, dest_file)
+ end
+
+ # Symlink all files matching +wildcard+ into the directory +dest_dir+.
+ def symlink_files(wildcard, dest_dir)
+ for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) }
+ end
+
+ # Remove all files matching +wildcard+. If a matching file is a
+ # directory, it must be empty to be removed. used +delete_all+ to
+ # recursively delete directories.
+ def delete(*wildcards)
+ wildcards.each do |wildcard|
+ Dir[wildcard].each do |fn|
+ if File.directory?(fn)
+ log "Deleting directory #{fn}"
+ Dir.delete(fn)
+ else
+ log "Deleting file #{fn}"
+ File.delete(fn)
+ end
+ end
+ end
+ end
+
+ # Recursively delete all files and directories matching +wildcard+.
+ def delete_all(*wildcards)
+ wildcards.each do |wildcard|
+ Dir[wildcard].each do |fn|
+ next if ! File.exist?(fn)
+ if File.directory?(fn)
+ Dir["#{fn}/*"].each do |subfn|
+ next if subfn=='.' || subfn=='..'
+ delete_all(subfn)
+ end
+ log "Deleting directory #{fn}"
+ Dir.delete(fn)
+ else
+ log "Deleting file #{fn}"
+ File.delete(fn)
+ end
+ end
+ end
+ end
+
+ # Make the directories given in +dirs+.
+ def makedirs(*dirs)
+ dirs.each do |fn|
+ log "Making directory #{fn}"
+ File.makedirs(fn)
+ end
+ end
+
+ # Make +dir+ the current working directory for the duration of
+ # executing the given block.
+ def indir(dir)
+ olddir = Dir.pwd
+ Dir.chdir(dir)
+ yield
+ ensure
+ Dir.chdir(olddir)
+ end
+
+ # Split a file path into individual directory names.
+ #
+ # For example:
+ # split_all("a/b/c") => ['a', 'b', 'c']
+ def split_all(path)
+ head, tail = File.split(path)
+ return [tail] if head == '.' || tail == '/'
+ return [head, tail] if head == '/'
+ return split_all(head) + [tail]
+ end
+
+ # Write a message to standard error if $verbose is enabled.
+ def log(msg)
+ print " " if $trace && $verbose
+ $stderr.puts msg if $verbose
+ end
+
+ # Perform a block with $verbose disabled.
+ def quiet(&block)
+ with_verbose(false, &block)
+ end
+
+ # Perform a block with $verbose enabled.
+ def verbose(&block)
+ with_verbose(true, &block)
+ end
+
+ # Perform a block with each file matching a set of wildcards.
+ def for_files(*wildcards)
+ wildcards.each do |wildcard|
+ Dir[wildcard].each do |fn|
+ yield(fn)
+ end
+ end
+ end
+
+ extend(self)
+
+ private # ----------------------------------------------------------
+
+ def for_matching_files(wildcard, dest_dir)
+ Dir[wildcard].each do |fn|
+ dest_file = File.join(dest_dir, fn)
+ parent = File.dirname(dest_file)
+ makedirs(parent) if ! File.directory?(parent)
+ yield(fn, dest_file)
+ end
+ end
+
+ def with_verbose(v)
+ oldverbose = $verbose
+ $verbose = v
+ yield
+ ensure
+ $verbose = oldverbose
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/default_loader.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/default_loader.rb
new file mode 100755
index 00000000000..5dd3c05617b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/default_loader.rb
@@ -0,0 +1,10 @@
+module Rake
+
+ # Default Rakefile loader used by +import+.
+ class DefaultLoader
+ def load(fn)
+ Rake.load_rakefile(File.expand_path(fn))
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb
new file mode 100755
index 00000000000..6d9a6b88f3a
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb
@@ -0,0 +1,176 @@
+# Rake DSL functions.
+require 'rake/file_utils_ext'
+
+module Rake
+
+ ##
+ # DSL is a module that provides #task, #desc, #namespace, etc. Use this
+ # when you'd like to use rake outside the top level scope.
+
+ module DSL
+
+ #--
+ # Include the FileUtils file manipulation functions in the top
+ # level module, but mark them private so that they don't
+ # unintentionally define methods on other objects.
+ #++
+
+ include FileUtilsExt
+ private(*FileUtils.instance_methods(false))
+ private(*FileUtilsExt.instance_methods(false))
+
+ private
+
+ # Declare a basic task.
+ #
+ # Example:
+ # task :clobber => [:clean] do
+ # rm_rf "html"
+ # end
+ #
+ def task(*args, &block)
+ Rake::Task.define_task(*args, &block)
+ end
+
+
+ # Declare a file task.
+ #
+ # Example:
+ # file "config.cfg" => ["config.template"] do
+ # open("config.cfg", "w") do |outfile|
+ # open("config.template") do |infile|
+ # while line = infile.gets
+ # outfile.puts line
+ # end
+ # end
+ # end
+ # end
+ #
+ def file(*args, &block)
+ Rake::FileTask.define_task(*args, &block)
+ end
+
+ # Declare a file creation task.
+ # (Mainly used for the directory command).
+ def file_create(args, &block)
+ Rake::FileCreationTask.define_task(args, &block)
+ end
+
+ # Declare a set of files tasks to create the given directories on
+ # demand.
+ #
+ # Example:
+ # directory "testdata/doc"
+ #
+ def directory(dir)
+ Rake.each_dir_parent(dir) do |d|
+ file_create d do |t|
+ mkdir_p t.name if ! File.exist?(t.name)
+ end
+ end
+ end
+
+ # Declare a task that performs its prerequisites in
+ # parallel. Multitasks does *not* guarantee that its prerequisites
+ # will execute in any given order (which is obvious when you think
+ # about it)
+ #
+ # Example:
+ # multitask :deploy => [:deploy_gem, :deploy_rdoc]
+ #
+ def multitask(args, &block)
+ Rake::MultiTask.define_task(args, &block)
+ end
+
+ # Create a new rake namespace and use it for evaluating the given
+ # block. Returns a NameSpace object that can be used to lookup
+ # tasks defined in the namespace.
+ #
+ # E.g.
+ #
+ # ns = namespace "nested" do
+ # task :run
+ # end
+ # task_run = ns[:run] # find :run in the given namespace.
+ #
+ def namespace(name=nil, &block)
+ name = name.to_s if name.kind_of?(Symbol)
+ name = name.to_str if name.respond_to?(:to_str)
+ unless name.kind_of?(String) || name.nil?
+ raise ArgumentError, "Expected a String or Symbol for a namespace name"
+ end
+ Rake.application.in_namespace(name, &block)
+ end
+
+ # Declare a rule for auto-tasks.
+ #
+ # Example:
+ # rule '.o' => '.c' do |t|
+ # sh %{cc -o #{t.name} #{t.source}}
+ # end
+ #
+ def rule(*args, &block)
+ Rake::Task.create_rule(*args, &block)
+ end
+
+ # Describe the next rake task.
+ #
+ # Example:
+ # desc "Run the Unit Tests"
+ # task :test => [:build]
+ # runtests
+ # end
+ #
+ def desc(description)
+ Rake.application.last_description = description
+ end
+
+ # Import the partial Rakefiles +fn+. Imported files are loaded
+ # _after_ the current file is completely loaded. This allows the
+ # import statement to appear anywhere in the importing file, and yet
+ # allowing the imported files to depend on objects defined in the
+ # importing file.
+ #
+ # A common use of the import statement is to include files
+ # containing dependency declarations.
+ #
+ # See also the --rakelibdir command line option.
+ #
+ # Example:
+ # import ".depend", "my_rules"
+ #
+ def import(*fns)
+ fns.each do |fn|
+ Rake.application.add_import(fn)
+ end
+ end
+
+ end
+
+ DeprecatedCommands = Object.new.extend(DSL)
+
+ module DeprecatedObjectDSL # :nodoc:
+ DSL.private_instance_methods(false).each do |name|
+ line = __LINE__+1
+ class_eval %{
+ def #{name}(*args, &block)
+ unless Rake.application.options.ignore_deprecate
+ unless @rake_dsl_warning
+ $stderr.puts "WARNING: Global access to Rake DSL methods is deprecated. Please include"
+ $stderr.puts " ... Rake::DSL into classes and modules which use the Rake DSL methods."
+ @rake_dsl_warning = true
+ end
+ $stderr.puts "WARNING: DSL method \#{self.class}##{name} called at \#{caller.first}"
+ end
+ Rake::DeprecatedCommands.send(:#{name}, *args, &block)
+ end
+ private :#{name}
+ }, __FILE__, line
+ end
+ end
+
+ extend FileUtilsExt
+end
+
+self.extend Rake::DSL
+include Rake::DeprecatedObjectDSL
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/early_time.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/early_time.rb
new file mode 100755
index 00000000000..8c0e7d33398
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/early_time.rb
@@ -0,0 +1,18 @@
+module Rake
+
+ # EarlyTime is a fake timestamp that occurs _before_ any other time value.
+ class EarlyTime
+ include Comparable
+ include Singleton
+
+ def <=>(other)
+ -1
+ end
+
+ def to_s
+ ""
+ end
+ end
+
+ EARLY = EarlyTime.instance
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/core.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/core.rb
new file mode 100755
index 00000000000..1f3a7389063
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/core.rb
@@ -0,0 +1,27 @@
+######################################################################
+# Core extension library
+#
+class Module
+ # Check for an existing method in the current class before extending. IF
+ # the method already exists, then a warning is printed and the extension is
+ # not added. Otherwise the block is yielded and any definitions in the
+ # block will take effect.
+ #
+ # Usage:
+ #
+ # class String
+ # rake_extension("xyz") do
+ # def xyz
+ # ...
+ # end
+ # end
+ # end
+ #
+ def rake_extension(method)
+ if method_defined?(method)
+ $stderr.puts "WARNING: Possible conflict with Rake extension: #{self}##{method} already exists"
+ else
+ yield
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/module.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/module.rb
new file mode 100755
index 00000000000..3f64aef6c8b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/module.rb
@@ -0,0 +1,39 @@
+require 'rake/ext/core'
+require 'rake/task'
+require 'rake/file_task'
+require 'rake/file_creation_task'
+require 'rake/application'
+require 'rake/task_manager'
+
+######################################################################
+# Rake extensions to Module.
+#
+class Module
+
+ # Rename the original handler to make it available.
+ alias :rake_original_const_missing :const_missing
+
+ # Check for deprecated uses of top level (i.e. in Object) uses of
+ # Rake class names. If someone tries to reference the constant
+ # name, display a warning and return the proper object. Using the
+ # --classic-namespace command line option will define these
+ # constants in Object and avoid this handler.
+ def const_missing(const_name)
+ case const_name
+ when :Task
+ Rake.application.const_warning(const_name)
+ Rake::Task
+ when :FileTask
+ Rake.application.const_warning(const_name)
+ Rake::FileTask
+ when :FileCreationTask
+ Rake.application.const_warning(const_name)
+ Rake::FileCreationTask
+ when :RakeApp
+ Rake.application.const_warning(const_name)
+ Rake::Application
+ else
+ rake_original_const_missing(const_name)
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/string.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/string.rb
new file mode 100755
index 00000000000..fb22a9deb10
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/string.rb
@@ -0,0 +1,167 @@
+require 'rake/ext/core'
+
+######################################################################
+# Rake extension methods for String.
+#
+class String
+ rake_extension("ext") do
+ # Replace the file extension with +newext+. If there is no extension on
+ # the string, append the new extension to the end. If the new extension
+ # is not given, or is the empty string, remove any existing extension.
+ #
+ # +ext+ is a user added method for the String class.
+ def ext(newext='')
+ return self.dup if ['.', '..'].include? self
+ if newext != ''
+ newext = (newext =~ /^\./) ? newext : ("." + newext)
+ end
+ self.chomp(File.extname(self)) << newext
+ end
+ end
+
+ rake_extension("pathmap") do
+ # Explode a path into individual components. Used by +pathmap+.
+ def pathmap_explode
+ head, tail = File.split(self)
+ return [self] if head == self
+ return [tail] if head == '.' || tail == '/'
+ return [head, tail] if head == '/'
+ return head.pathmap_explode + [tail]
+ end
+ protected :pathmap_explode
+
+ # Extract a partial path from the path. Include +n+ directories from the
+ # front end (left hand side) if +n+ is positive. Include |+n+|
+ # directories from the back end (right hand side) if +n+ is negative.
+ def pathmap_partial(n)
+ dirs = File.dirname(self).pathmap_explode
+ partial_dirs =
+ if n > 0
+ dirs[0...n]
+ elsif n < 0
+ dirs.reverse[0...-n].reverse
+ else
+ "."
+ end
+ File.join(partial_dirs)
+ end
+ protected :pathmap_partial
+
+ # Preform the pathmap replacement operations on the given path. The
+ # patterns take the form 'pat1,rep1;pat2,rep2...'.
+ def pathmap_replace(patterns, &block)
+ result = self
+ patterns.split(';').each do |pair|
+ pattern, replacement = pair.split(',')
+ pattern = Regexp.new(pattern)
+ if replacement == '*' && block_given?
+ result = result.sub(pattern, &block)
+ elsif replacement
+ result = result.sub(pattern, replacement)
+ else
+ result = result.sub(pattern, '')
+ end
+ end
+ result
+ end
+ protected :pathmap_replace
+
+ # Map the path according to the given specification. The specification
+ # controls the details of the mapping. The following special patterns are
+ # recognized:
+ #
+ # * %p -- The complete path.
+ # * %f -- The base file name of the path, with its file extension,
+ # but without any directories.
+ # * %n -- The file name of the path without its file extension.
+ # * %d -- The directory list of the path.
+ # * %x -- The file extension of the path. An empty string if there
+ # is no extension.
+ # * %X -- Everything *but* the file extension.
+ # * %s -- The alternate file separator if defined, otherwise use
+ # the standard file separator.
+ # * %% -- A percent sign.
+ #
+ # The %d specifier can also have a numeric prefix (e.g. '%2d'). If the
+ # number is positive, only return (up to) +n+ directories in the path,
+ # starting from the left hand side. If +n+ is negative, return (up to)
+ # |+n+| directories from the right hand side of the path.
+ #
+ # Examples:
+ #
+ # 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b'
+ # 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d'
+ #
+ # Also the %d, %p, %f, %n, %x, and %X operators can take a
+ # pattern/replacement argument to perform simple string substitutions on a
+ # particular part of the path. The pattern and replacement are separated
+ # by a comma and are enclosed by curly braces. The replacement spec comes
+ # after the % character but before the operator letter. (e.g.
+ # "%{old,new}d"). Multiple replacement specs should be separated by
+ # semi-colons (e.g. "%{old,new;src,bin}d").
+ #
+ # Regular expressions may be used for the pattern, and back refs may be
+ # used in the replacement text. Curly braces, commas and semi-colons are
+ # excluded from both the pattern and replacement text (let's keep parsing
+ # reasonable).
+ #
+ # For example:
+ #
+ # "src/org/onestepback/proj/A.java".pathmap("%{^src,bin}X.class")
+ #
+ # returns:
+ #
+ # "bin/org/onestepback/proj/A.class"
+ #
+ # If the replacement text is '*', then a block may be provided to perform
+ # some arbitrary calculation for the replacement.
+ #
+ # For example:
+ #
+ # "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext|
+ # ext.downcase
+ # }
+ #
+ # Returns:
+ #
+ # "/path/to/file.txt"
+ #
+ def pathmap(spec=nil, &block)
+ return self if spec.nil?
+ result = ''
+ spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag|
+ case frag
+ when '%f'
+ result << File.basename(self)
+ when '%n'
+ result << File.basename(self).ext
+ when '%d'
+ result << File.dirname(self)
+ when '%x'
+ result << File.extname(self)
+ when '%X'
+ result << self.ext
+ when '%p'
+ result << self
+ when '%s'
+ result << (File::ALT_SEPARATOR || File::SEPARATOR)
+ when '%-'
+ # do nothing
+ when '%%'
+ result << "%"
+ when /%(-?\d+)d/
+ result << pathmap_partial($1.to_i)
+ when /^%\{([^}]*)\}(\d*[dpfnxX])/
+ patterns, operator = $1, $2
+ result << pathmap('%' + operator).pathmap_replace(patterns, &block)
+ when /^%/
+ fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'"
+ else
+ result << frag
+ end
+ end
+ result
+ end
+ end
+end # class String
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/time.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/time.rb
new file mode 100755
index 00000000000..7877abf0ceb
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ext/time.rb
@@ -0,0 +1,14 @@
+#--
+# Extensions to time to allow comparisons with an early time class.
+
+class Time
+ alias rake_original_time_compare :<=>
+ def <=>(other)
+ if Rake::EarlyTime === other
+ - other.<=>(self)
+ else
+ rake_original_time_compare(other)
+ end
+ end
+end
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb
new file mode 100755
index 00000000000..c87e2192bb4
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb
@@ -0,0 +1,24 @@
+require 'rake/file_task'
+require 'rake/early_time'
+
+module Rake
+
+ # A FileCreationTask is a file task that when used as a dependency will be
+ # needed if and only if the file has not been created. Once created, it is
+ # not re-triggered if any of its dependencies are newer, nor does trigger
+ # any rebuilds of tasks that depend on it whenever it is updated.
+ #
+ class FileCreationTask < FileTask
+ # Is this file task needed? Yes if it doesn't exist.
+ def needed?
+ ! File.exist?(name)
+ end
+
+ # Time stamp for file creation task. This time stamp is earlier
+ # than any other time stamp.
+ def timestamp
+ Rake::EARLY
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_list.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_list.rb
new file mode 100755
index 00000000000..9f780346f3a
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_list.rb
@@ -0,0 +1,403 @@
+require 'rake/cloneable'
+require 'rake/file_utils_ext'
+require 'rake/pathmap'
+
+######################################################################
+module Rake
+
+ # #########################################################################
+ # A FileList is essentially an array with a few helper methods defined to
+ # make file manipulation a bit easier.
+ #
+ # FileLists are lazy. When given a list of glob patterns for possible files
+ # to be included in the file list, instead of searching the file structures
+ # to find the files, a FileList holds the pattern for latter use.
+ #
+ # This allows us to define a number of FileList to match any number of
+ # files, but only search out the actual files when then FileList itself is
+ # actually used. The key is that the first time an element of the
+ # FileList/Array is requested, the pending patterns are resolved into a real
+ # list of file names.
+ #
+ class FileList
+
+ include Cloneable
+
+ # == Method Delegation
+ #
+ # The lazy evaluation magic of FileLists happens by implementing all the
+ # array specific methods to call +resolve+ before delegating the heavy
+ # lifting to an embedded array object (@items).
+ #
+ # In addition, there are two kinds of delegation calls. The regular kind
+ # delegates to the @items array and returns the result directly. Well,
+ # almost directly. It checks if the returned value is the @items object
+ # itself, and if so will return the FileList object instead.
+ #
+ # The second kind of delegation call is used in methods that normally
+ # return a new Array object. We want to capture the return value of these
+ # methods and wrap them in a new FileList object. We enumerate these
+ # methods in the +SPECIAL_RETURN+ list below.
+
+ # List of array methods (that are not in +Object+) that need to be
+ # delegated.
+ ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map { |n| n.to_s }
+
+ # List of additional methods that must be delegated.
+ MUST_DEFINE = %w[to_a inspect <=>]
+
+ # List of methods that should not be delegated here (we define special
+ # versions of them explicitly below).
+ MUST_NOT_DEFINE = %w[to_a to_ary partition *]
+
+ # List of delegated methods that return new array values which need
+ # wrapping.
+ SPECIAL_RETURN = %w[
+ map collect sort sort_by select find_all reject grep
+ compact flatten uniq values_at
+ + - & |
+ ]
+
+ DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).collect{ |s| s.to_s }.sort.uniq
+
+ # Now do the delegation.
+ DELEGATING_METHODS.each_with_index do |sym, i|
+ if SPECIAL_RETURN.include?(sym)
+ ln = __LINE__+1
+ class_eval %{
+ def #{sym}(*args, &block)
+ resolve
+ result = @items.send(:#{sym}, *args, &block)
+ FileList.new.import(result)
+ end
+ }, __FILE__, ln
+ else
+ ln = __LINE__+1
+ class_eval %{
+ def #{sym}(*args, &block)
+ resolve
+ result = @items.send(:#{sym}, *args, &block)
+ result.object_id == @items.object_id ? self : result
+ end
+ }, __FILE__, ln
+ end
+ end
+
+ # Create a file list from the globbable patterns given. If you wish to
+ # perform multiple includes or excludes at object build time, use the
+ # "yield self" pattern.
+ #
+ # Example:
+ # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb')
+ #
+ # pkg_files = FileList.new('lib/**/*') do |fl|
+ # fl.exclude(/\bCVS\b/)
+ # end
+ #
+ def initialize(*patterns)
+ @pending_add = []
+ @pending = false
+ @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
+ @exclude_procs = DEFAULT_IGNORE_PROCS.dup
+ @items = []
+ patterns.each { |pattern| include(pattern) }
+ yield self if block_given?
+ end
+
+ # Add file names defined by glob patterns to the file list. If an array
+ # is given, add each element of the array.
+ #
+ # Example:
+ # file_list.include("*.java", "*.cfg")
+ # file_list.include %w( math.c lib.h *.o )
+ #
+ def include(*filenames)
+ # TODO: check for pending
+ filenames.each do |fn|
+ if fn.respond_to? :to_ary
+ include(*fn.to_ary)
+ else
+ @pending_add << fn
+ end
+ end
+ @pending = true
+ self
+ end
+ alias :add :include
+
+ # Register a list of file name patterns that should be excluded from the
+ # list. Patterns may be regular expressions, glob patterns or regular
+ # strings. In addition, a block given to exclude will remove entries that
+ # return true when given to the block.
+ #
+ # Note that glob patterns are expanded against the file system. If a file
+ # is explicitly added to a file list, but does not exist in the file
+ # system, then an glob pattern in the exclude list will not exclude the
+ # file.
+ #
+ # Examples:
+ # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c']
+ # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c']
+ #
+ # If "a.c" is a file, then ...
+ # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c']
+ #
+ # If "a.c" is not a file, then ...
+ # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c']
+ #
+ def exclude(*patterns, &block)
+ patterns.each do |pat|
+ @exclude_patterns << pat
+ end
+ if block_given?
+ @exclude_procs << block
+ end
+ resolve_exclude if ! @pending
+ self
+ end
+
+
+ # Clear all the exclude patterns so that we exclude nothing.
+ def clear_exclude
+ @exclude_patterns = []
+ @exclude_procs = []
+ self
+ end
+
+ # Define equality.
+ def ==(array)
+ to_ary == array
+ end
+
+ # Return the internal array object.
+ def to_a
+ resolve
+ @items
+ end
+
+ # Return the internal array object.
+ def to_ary
+ to_a
+ end
+
+ # Lie about our class.
+ def is_a?(klass)
+ klass == Array || super(klass)
+ end
+ alias kind_of? is_a?
+
+ # Redefine * to return either a string or a new file list.
+ def *(other)
+ result = @items * other
+ case result
+ when Array
+ FileList.new.import(result)
+ else
+ result
+ end
+ end
+
+ # Resolve all the pending adds now.
+ def resolve
+ if @pending
+ @pending = false
+ @pending_add.each do |fn| resolve_add(fn) end
+ @pending_add = []
+ resolve_exclude
+ end
+ self
+ end
+
+ def resolve_add(fn)
+ case fn
+ when %r{[*?\[\{]}
+ add_matching(fn)
+ else
+ self << fn
+ end
+ end
+ private :resolve_add
+
+ def resolve_exclude
+ reject! { |fn| exclude?(fn) }
+ self
+ end
+ private :resolve_exclude
+
+ # Return a new FileList with the results of running +sub+ against each
+ # element of the original list.
+ #
+ # Example:
+ # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o']
+ #
+ def sub(pat, rep)
+ inject(FileList.new) { |res, fn| res << fn.sub(pat,rep) }
+ end
+
+ # Return a new FileList with the results of running +gsub+ against each
+ # element of the original list.
+ #
+ # Example:
+ # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\")
+ # => ['lib\\test\\file', 'x\\y']
+ #
+ def gsub(pat, rep)
+ inject(FileList.new) { |res, fn| res << fn.gsub(pat,rep) }
+ end
+
+ # Same as +sub+ except that the original file list is modified.
+ def sub!(pat, rep)
+ each_with_index { |fn, i| self[i] = fn.sub(pat,rep) }
+ self
+ end
+
+ # Same as +gsub+ except that the original file list is modified.
+ def gsub!(pat, rep)
+ each_with_index { |fn, i| self[i] = fn.gsub(pat,rep) }
+ self
+ end
+
+ # Apply the pathmap spec to each of the included file names, returning a
+ # new file list with the modified paths. (See String#pathmap for
+ # details.)
+ def pathmap(spec=nil)
+ collect { |fn| fn.pathmap(spec) }
+ end
+
+ # Return a new FileList with String#ext method applied to
+ # each member of the array.
+ #
+ # This method is a shortcut for:
+ #
+ # array.collect { |item| item.ext(newext) }
+ #
+ # +ext+ is a user added method for the Array class.
+ def ext(newext='')
+ collect { |fn| fn.ext(newext) }
+ end
+
+
+ # Grep each of the files in the filelist using the given pattern. If a
+ # block is given, call the block on each matching line, passing the file
+ # name, line number, and the matching line of text. If no block is given,
+ # a standard emacs style file:linenumber:line message will be printed to
+ # standard out. Returns the number of matched items.
+ def egrep(pattern, *options)
+ matched = 0
+ each do |fn|
+ begin
+ open(fn, "rb", *options) do |inf|
+ count = 0
+ inf.each do |line|
+ count += 1
+ if pattern.match(line)
+ matched += 1
+ if block_given?
+ yield fn, count, line
+ else
+ puts "#{fn}:#{count}:#{line}"
+ end
+ end
+ end
+ end
+ rescue StandardError => ex
+ $stderr.puts "Error while processing '#{fn}': #{ex}"
+ end
+ end
+ matched
+ end
+
+ # Return a new file list that only contains file names from the current
+ # file list that exist on the file system.
+ def existing
+ select { |fn| File.exist?(fn) }
+ end
+
+ # Modify the current file list so that it contains only file name that
+ # exist on the file system.
+ def existing!
+ resolve
+ @items = @items.select { |fn| File.exist?(fn) }
+ self
+ end
+
+ # FileList version of partition. Needed because the nested arrays should
+ # be FileLists in this version.
+ def partition(&block) # :nodoc:
+ resolve
+ result = @items.partition(&block)
+ [
+ FileList.new.import(result[0]),
+ FileList.new.import(result[1]),
+ ]
+ end
+
+ # Convert a FileList to a string by joining all elements with a space.
+ def to_s
+ resolve
+ self.join(' ')
+ end
+
+ # Add matching glob patterns.
+ def add_matching(pattern)
+ Dir[pattern].each do |fn|
+ self << fn unless exclude?(fn)
+ end
+ end
+ private :add_matching
+
+ # Should the given file name be excluded?
+ def exclude?(fn)
+ return true if @exclude_patterns.any? do |pat|
+ case pat
+ when Regexp
+ fn =~ pat
+ when /[*?]/
+ File.fnmatch?(pat, fn, File::FNM_PATHNAME)
+ else
+ fn == pat
+ end
+ end
+ @exclude_procs.any? { |p| p.call(fn) }
+ end
+
+ DEFAULT_IGNORE_PATTERNS = [
+ /(^|[\/\\])CVS([\/\\]|$)/,
+ /(^|[\/\\])\.svn([\/\\]|$)/,
+ /\.bak$/,
+ /~$/
+ ]
+ DEFAULT_IGNORE_PROCS = [
+ proc { |fn| fn =~ /(^|[\/\\])core$/ && ! File.directory?(fn) }
+ ]
+
+ def import(array)
+ @items = array
+ self
+ end
+
+ class << self
+ # Create a new file list including the files listed. Similar to:
+ #
+ # FileList.new(*args)
+ def [](*args)
+ new(*args)
+ end
+ end
+ end
+end
+
+module Rake
+ class << self
+
+ # Yield each file or directory component.
+ def each_dir_parent(dir) # :nodoc:
+ old_length = nil
+ while dir != '.' && dir.length != old_length
+ yield(dir)
+ old_length = dir.length
+ dir = File.dirname(dir)
+ end
+ end
+ end
+end # module Rake
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_task.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_task.rb
new file mode 100755
index 00000000000..78902a86fd6
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_task.rb
@@ -0,0 +1,47 @@
+require 'rake/task.rb'
+require 'rake/early_time'
+
+module Rake
+ # #########################################################################
+ # A FileTask is a task that includes time based dependencies. If any of a
+ # FileTask's prerequisites have a timestamp that is later than the file
+ # represented by this task, then the file must be rebuilt (using the
+ # supplied actions).
+ #
+ class FileTask < Task
+
+ # Is this file task needed? Yes if it doesn't exist, or if its time stamp
+ # is out of date.
+ def needed?
+ ! File.exist?(name) || out_of_date?(timestamp)
+ end
+
+ # Time stamp for file task.
+ def timestamp
+ if File.exist?(name)
+ File.mtime(name.to_s)
+ else
+ Rake::EARLY
+ end
+ end
+
+ private
+
+ # Are there any prerequisites with a later time than the given time stamp?
+ def out_of_date?(stamp)
+ @prerequisites.any? { |n| application[n, @scope].timestamp > stamp}
+ end
+
+ # ----------------------------------------------------------------
+ # Task class methods.
+ #
+ class << self
+ # Apply the scope to the task name according to the rules for this kind
+ # of task. File based tasks ignore the scope when creating the name.
+ def scope_name(scope, task_name)
+ task_name
+ end
+ end
+ end
+end
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_utils.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_utils.rb
new file mode 100755
index 00000000000..e02d541ab81
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_utils.rb
@@ -0,0 +1,114 @@
+require 'rbconfig'
+require 'fileutils'
+
+#--
+# This a FileUtils extension that defines several additional commands to be
+# added to the FileUtils utility functions.
+module FileUtils
+ # Path to the currently running Ruby program
+ RUBY = File.join(
+ RbConfig::CONFIG['bindir'],
+ RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']).
+ sub(/.*\s.*/m, '"\&"')
+
+ OPT_TABLE['sh'] = %w(noop verbose)
+ OPT_TABLE['ruby'] = %w(noop verbose)
+
+ # Run the system command +cmd+. If multiple arguments are given the command
+ # is not run with the shell (same semantics as Kernel::exec and
+ # Kernel::system).
+ #
+ # Example:
+ # sh %{ls -ltr}
+ #
+ # sh 'ls', 'file with spaces'
+ #
+ # # check exit status after command runs
+ # sh %{grep pattern file} do |ok, res|
+ # if ! ok
+ # puts "pattern not found (status = #{res.exitstatus})"
+ # end
+ # end
+ #
+ def sh(*cmd, &block)
+ options = (Hash === cmd.last) ? cmd.pop : {}
+ shell_runner = block_given? ? block : create_shell_runner(cmd)
+ set_verbose_option(options)
+ options[:noop] ||= Rake::FileUtilsExt.nowrite_flag
+ Rake.rake_check_options options, :noop, :verbose
+ Rake.rake_output_message cmd.join(" ") if options[:verbose]
+
+ unless options[:noop]
+ res = rake_system(*cmd)
+ status = $?
+ status = PseudoStatus.new(1) if !res && status.nil?
+ shell_runner.call(res, status)
+ end
+ end
+
+ def create_shell_runner(cmd) # :nodoc:
+ show_command = cmd.join(" ")
+ show_command = show_command[0,42] + "..." unless $trace
+ lambda { |ok, status|
+ ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]"
+ }
+ end
+ private :create_shell_runner
+
+ def set_verbose_option(options) # :nodoc:
+ unless options.key? :verbose
+ options[:verbose] =
+ Rake::FileUtilsExt.verbose_flag == Rake::FileUtilsExt::DEFAULT ||
+ Rake::FileUtilsExt.verbose_flag
+ end
+ end
+ private :set_verbose_option
+
+ def rake_system(*cmd) # :nodoc:
+ Rake::AltSystem.system(*cmd)
+ end
+ private :rake_system
+
+ # Run a Ruby interpreter with the given arguments.
+ #
+ # Example:
+ # ruby %{-pe '$_.upcase!' 1 then
+ sh(*([RUBY] + args + [options]), &block)
+ else
+ sh("#{RUBY} #{args.first}", options, &block)
+ end
+ end
+
+ LN_SUPPORTED = [true]
+
+ # Attempt to do a normal file link, but fall back to a copy if the link
+ # fails.
+ def safe_ln(*args)
+ unless LN_SUPPORTED[0]
+ cp(*args)
+ else
+ begin
+ ln(*args)
+ rescue StandardError, NotImplementedError
+ LN_SUPPORTED[0] = false
+ cp(*args)
+ end
+ end
+ end
+
+ # Split a file path into individual directory names.
+ #
+ # Example:
+ # split_all("a/b/c") => ['a', 'b', 'c']
+ #
+ def split_all(path)
+ head, tail = File.split(path)
+ return [tail] if head == '.' || tail == '/'
+ return [head, tail] if head == '/'
+ return split_all(head) + [tail]
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb
new file mode 100755
index 00000000000..557420df809
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb
@@ -0,0 +1,145 @@
+require 'rake/file_utils'
+
+module Rake
+ #
+ # FileUtilsExt provides a custom version of the FileUtils methods
+ # that respond to the verbose and nowrite
+ # commands.
+ #
+ module FileUtilsExt
+ include FileUtils
+
+ class << self
+ attr_accessor :verbose_flag, :nowrite_flag
+ end
+
+ DEFAULT = Object.new
+
+ FileUtilsExt.verbose_flag = DEFAULT
+ FileUtilsExt.nowrite_flag = false
+
+ $fileutils_verbose = true
+ $fileutils_nowrite = false
+
+ FileUtils::OPT_TABLE.each do |name, opts|
+ default_options = []
+ if opts.include?(:verbose) || opts.include?("verbose")
+ default_options << ':verbose => FileUtilsExt.verbose_flag'
+ end
+ if opts.include?(:noop) || opts.include?("noop")
+ default_options << ':noop => FileUtilsExt.nowrite_flag'
+ end
+
+ next if default_options.empty?
+ module_eval(<<-EOS, __FILE__, __LINE__ + 1)
+ def #{name}( *args, &block )
+ super(
+ *rake_merge_option(args,
+ #{default_options.join(', ')}
+ ), &block)
+ end
+ EOS
+ end
+
+ # Get/set the verbose flag controlling output from the FileUtils
+ # utilities. If verbose is true, then the utility method is
+ # echoed to standard output.
+ #
+ # Examples:
+ # verbose # return the current value of the
+ # # verbose flag
+ # verbose(v) # set the verbose flag to _v_.
+ # verbose(v) { code } # Execute code with the verbose flag set
+ # # temporarily to _v_. Return to the
+ # # original value when code is done.
+ def verbose(value=nil)
+ oldvalue = FileUtilsExt.verbose_flag
+ FileUtilsExt.verbose_flag = value unless value.nil?
+ if block_given?
+ begin
+ yield
+ ensure
+ FileUtilsExt.verbose_flag = oldvalue
+ end
+ end
+ FileUtilsExt.verbose_flag
+ end
+
+ # Get/set the nowrite flag controlling output from the FileUtils
+ # utilities. If verbose is true, then the utility method is
+ # echoed to standard output.
+ #
+ # Examples:
+ # nowrite # return the current value of the
+ # # nowrite flag
+ # nowrite(v) # set the nowrite flag to _v_.
+ # nowrite(v) { code } # Execute code with the nowrite flag set
+ # # temporarily to _v_. Return to the
+ # # original value when code is done.
+ def nowrite(value=nil)
+ oldvalue = FileUtilsExt.nowrite_flag
+ FileUtilsExt.nowrite_flag = value unless value.nil?
+ if block_given?
+ begin
+ yield
+ ensure
+ FileUtilsExt.nowrite_flag = oldvalue
+ end
+ end
+ oldvalue
+ end
+
+ # Use this function to prevent potentially destructive ruby code
+ # from running when the :nowrite flag is set.
+ #
+ # Example:
+ #
+ # when_writing("Building Project") do
+ # project.build
+ # end
+ #
+ # The following code will build the project under normal
+ # conditions. If the nowrite(true) flag is set, then the example
+ # will print:
+ #
+ # DRYRUN: Building Project
+ #
+ # instead of actually building the project.
+ #
+ def when_writing(msg=nil)
+ if FileUtilsExt.nowrite_flag
+ $stderr.puts "DRYRUN: #{msg}" if msg
+ else
+ yield
+ end
+ end
+
+ # Merge the given options with the default values.
+ def rake_merge_option(args, defaults)
+ if Hash === args.last
+ defaults.update(args.last)
+ args.pop
+ end
+ args.push defaults
+ args
+ end
+
+ # Send the message to the default rake output (which is $stderr).
+ def rake_output_message(message)
+ $stderr.puts(message)
+ end
+
+ # Check that the options do not contain options not listed in
+ # +optdecl+. An ArgumentError exception is thrown if non-declared
+ # options are found.
+ def rake_check_options(options, *optdecl)
+ h = options.dup
+ optdecl.each do |name|
+ h.delete name
+ end
+ raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless h.empty?
+ end
+
+ extend self
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb
new file mode 100755
index 00000000000..5f1fc4def87
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb
@@ -0,0 +1,15 @@
+# rake/gempackagetask is deprecated in favor of rubygems/package_task
+
+warn 'rake/gempackagetask is deprecated. Use rubygems/package_task instead'
+
+require 'rubygems'
+require 'rubygems/package_task'
+
+require 'rake'
+
+# :stopdoc:
+
+module Rake
+ GemPackageTask = Gem::PackageTask
+end
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
new file mode 100755
index 00000000000..8a01ab4c295
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
@@ -0,0 +1,51 @@
+module Rake
+
+ ####################################################################
+ # InvocationChain tracks the chain of task invocations to detect
+ # circular dependencies.
+ class InvocationChain
+ def initialize(value, tail)
+ @value = value
+ @tail = tail
+ end
+
+ def member?(obj)
+ @value == obj || @tail.member?(obj)
+ end
+
+ def append(value)
+ if member?(value)
+ fail RuntimeError, "Circular dependency detected: #{to_s} => #{value}"
+ end
+ self.class.new(value, self)
+ end
+
+ def to_s
+ "#{prefix}#{@value}"
+ end
+
+ def self.append(value, chain)
+ chain.append(value)
+ end
+
+ private
+
+ def prefix
+ "#{@tail.to_s} => "
+ end
+
+ class EmptyInvocationChain
+ def member?(obj)
+ false
+ end
+ def append(value)
+ InvocationChain.new(value, self)
+ end
+ def to_s
+ "TOP"
+ end
+ end
+
+ EMPTY = EmptyInvocationChain.new
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb
new file mode 100755
index 00000000000..84ff3353ba9
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb
@@ -0,0 +1,16 @@
+module Rake
+ module InvocationExceptionMixin
+ # Return the invocation chain (list of Rake tasks) that were in
+ # effect when this exception was detected by rake. May be null if
+ # no tasks were active.
+ def chain
+ @rake_invocation_chain ||= nil
+ end
+
+ # Set the invocation chain in effect when this exception was
+ # detected.
+ def chain=(value)
+ @rake_invocation_chain = value
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb
new file mode 100755
index 00000000000..4ece4323af8
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb
@@ -0,0 +1,40 @@
+module Rake
+
+ # Makefile loader to be used with the import file loader.
+ class MakefileLoader
+ include Rake::DSL
+
+ SPACE_MARK = "\0"
+
+ # Load the makefile dependencies in +fn+.
+ def load(fn)
+ lines = File.read fn
+ lines.gsub!(/\\ /, SPACE_MARK)
+ lines.gsub!(/#[^\n]*\n/m, "")
+ lines.gsub!(/\\\n/, ' ')
+ lines.each_line do |line|
+ process_line(line)
+ end
+ end
+
+ private
+
+ # Process one logical line of makefile data.
+ def process_line(line)
+ file_tasks, args = line.split(':', 2)
+ return if args.nil?
+ dependents = args.split.map { |d| respace(d) }
+ file_tasks.scan(/\S+/) do |file_task|
+ file_task = respace(file_task)
+ file file_task => dependents
+ end
+ end
+
+ def respace(str)
+ str.tr SPACE_MARK, ' '
+ end
+ end
+
+ # Install the handler
+ Rake.application.add_loader('mf', MakefileLoader.new)
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/multi_task.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/multi_task.rb
new file mode 100755
index 00000000000..21c8de732f0
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/multi_task.rb
@@ -0,0 +1,16 @@
+module Rake
+
+ # Same as a regular task, but the immediate prerequisites are done in
+ # parallel using Ruby threads.
+ #
+ class MultiTask < Task
+ private
+ def invoke_prerequisites(args, invocation_chain)
+ threads = @prerequisites.collect { |p|
+ Thread.new(p) { |r| application[r, @scope].invoke_with_call_chain(args, invocation_chain) }
+ }
+ threads.each { |t| t.join }
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/name_space.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/name_space.rb
new file mode 100755
index 00000000000..e1cc0940b8a
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/name_space.rb
@@ -0,0 +1,25 @@
+module Rake
+
+ # The NameSpace class will lookup task names in the the scope
+ # defined by a +namespace+ command.
+ #
+ class NameSpace
+
+ # Create a namespace lookup object using the given task manager
+ # and the list of scopes.
+ def initialize(task_manager, scope_list)
+ @task_manager = task_manager
+ @scope = scope_list.dup
+ end
+
+ # Lookup a task named +name+ in the namespace.
+ def [](name)
+ @task_manager.lookup(name, @scope)
+ end
+
+ # Return the list of tasks defined in this and nested namespaces.
+ def tasks
+ @task_manager.tasks_in_scope(@scope)
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/packagetask.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/packagetask.rb
new file mode 100755
index 00000000000..08c1a8c025d
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/packagetask.rb
@@ -0,0 +1,185 @@
+# Define a package task library to aid in the definition of
+# redistributable package files.
+
+require 'rake'
+require 'rake/tasklib'
+
+module Rake
+
+ # Create a packaging task that will package the project into
+ # distributable files (e.g zip archive or tar files).
+ #
+ # The PackageTask will create the following targets:
+ #
+ # [:package]
+ # Create all the requested package files.
+ #
+ # [:clobber_package]
+ # Delete all the package files. This target is automatically
+ # added to the main clobber target.
+ #
+ # [:repackage]
+ # Rebuild the package files from scratch, even if they are not out
+ # of date.
+ #
+ # ["package_dir/name-version.tgz"]
+ # Create a gzipped tar package (if need_tar is true).
+ #
+ # ["package_dir/name-version.tar.gz"]
+ # Create a gzipped tar package (if need_tar_gz is true).
+ #
+ # ["package_dir/name-version.tar.bz2"]
+ # Create a bzip2'd tar package (if need_tar_bz2 is true).
+ #
+ # ["package_dir/name-version.zip"]
+ # Create a zip package archive (if need_zip is true).
+ #
+ # Example:
+ #
+ # Rake::PackageTask.new("rake", "1.2.3") do |p|
+ # p.need_tar = true
+ # p.package_files.include("lib/**/*.rb")
+ # end
+ #
+ class PackageTask < TaskLib
+ # Name of the package (from the GEM Spec).
+ attr_accessor :name
+
+ # Version of the package (e.g. '1.3.2').
+ attr_accessor :version
+
+ # Directory used to store the package files (default is 'pkg').
+ attr_accessor :package_dir
+
+ # True if a gzipped tar file (tgz) should be produced (default is false).
+ attr_accessor :need_tar
+
+ # True if a gzipped tar file (tar.gz) should be produced (default is false).
+ attr_accessor :need_tar_gz
+
+ # True if a bzip2'd tar file (tar.bz2) should be produced (default is false).
+ attr_accessor :need_tar_bz2
+
+ # True if a zip file should be produced (default is false)
+ attr_accessor :need_zip
+
+ # List of files to be included in the package.
+ attr_accessor :package_files
+
+ # Tar command for gzipped or bzip2ed archives. The default is 'tar'.
+ attr_accessor :tar_command
+
+ # Zip command for zipped archives. The default is 'zip'.
+ attr_accessor :zip_command
+
+ # Create a Package Task with the given name and version. Use +:noversion+
+ # as the version to build a package without a version or to provide a
+ # fully-versioned package name.
+
+ def initialize(name=nil, version=nil)
+ init(name, version)
+ yield self if block_given?
+ define unless name.nil?
+ end
+
+ # Initialization that bypasses the "yield self" and "define" step.
+ def init(name, version)
+ @name = name
+ @version = version
+ @package_files = Rake::FileList.new
+ @package_dir = 'pkg'
+ @need_tar = false
+ @need_tar_gz = false
+ @need_tar_bz2 = false
+ @need_zip = false
+ @tar_command = 'tar'
+ @zip_command = 'zip'
+ end
+
+ # Create the tasks defined by this task library.
+ def define
+ fail "Version required (or :noversion)" if @version.nil?
+ @version = nil if :noversion == @version
+
+ desc "Build all the packages"
+ task :package
+
+ desc "Force a rebuild of the package files"
+ task :repackage => [:clobber_package, :package]
+
+ desc "Remove package products"
+ task :clobber_package do
+ rm_r package_dir rescue nil
+ end
+
+ task :clobber => [:clobber_package]
+
+ [
+ [need_tar, tgz_file, "z"],
+ [need_tar_gz, tar_gz_file, "z"],
+ [need_tar_bz2, tar_bz2_file, "j"]
+ ].each do |(need, file, flag)|
+ if need
+ task :package => ["#{package_dir}/#{file}"]
+ file "#{package_dir}/#{file}" => [package_dir_path] + package_files do
+ chdir(package_dir) do
+ sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}}
+ end
+ end
+ end
+ end
+
+ if need_zip
+ task :package => ["#{package_dir}/#{zip_file}"]
+ file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
+ chdir(package_dir) do
+ sh %{#{@zip_command} -r #{zip_file} #{package_name}}
+ end
+ end
+ end
+
+ directory package_dir
+
+ file package_dir_path => @package_files do
+ mkdir_p package_dir rescue nil
+ @package_files.each do |fn|
+ f = File.join(package_dir_path, fn)
+ fdir = File.dirname(f)
+ mkdir_p(fdir) if !File.exist?(fdir)
+ if File.directory?(fn)
+ mkdir_p(f)
+ else
+ rm_f f
+ safe_ln(fn, f)
+ end
+ end
+ end
+ self
+ end
+
+ def package_name
+ @version ? "#{@name}-#{@version}" : @name
+ end
+
+ def package_dir_path
+ "#{package_dir}/#{package_name}"
+ end
+
+ def tgz_file
+ "#{package_name}.tgz"
+ end
+
+ def tar_gz_file
+ "#{package_name}.tar.gz"
+ end
+
+ def tar_bz2_file
+ "#{package_name}.tar.bz2"
+ end
+
+ def zip_file
+ "#{package_name}.zip"
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/pathmap.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/pathmap.rb
new file mode 100755
index 00000000000..22757243413
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/pathmap.rb
@@ -0,0 +1 @@
+require 'rake/ext/string'
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb
new file mode 100755
index 00000000000..b58df3da184
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb
@@ -0,0 +1,24 @@
+module Rake
+
+ ####################################################################
+ # Exit status class for times the system just gives us a nil.
+ class PseudoStatus
+ attr_reader :exitstatus
+ def initialize(code=0)
+ @exitstatus = code
+ end
+ def to_i
+ @exitstatus << 8
+ end
+ def >>(n)
+ to_i >> n
+ end
+ def stopped?
+ false
+ end
+ def exited?
+ true
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rake_module.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rake_module.rb
new file mode 100755
index 00000000000..a9d210c6375
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rake_module.rb
@@ -0,0 +1,29 @@
+require 'rake/application'
+
+module Rake
+
+ # Rake module singleton methods.
+ #
+ class << self
+ # Current Rake Application
+ def application
+ @application ||= Rake::Application.new
+ end
+
+ # Set the current Rake application object.
+ def application=(app)
+ @application = app
+ end
+
+ # Return the original directory where the Rake application was started.
+ def original_dir
+ application.original_dir
+ end
+
+ # Load a rakefile.
+ def load_rakefile(path)
+ load(path)
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb
new file mode 100755
index 00000000000..7e3a6b3f352
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb
@@ -0,0 +1,22 @@
+require 'rake'
+
+# Load the test files from the command line.
+argv = ARGV.select do |argument|
+ case argument
+ when /^-/ then
+ argument
+ when /\*/ then
+ FileList[argument].to_a.each do |file|
+ require File.expand_path file
+ end
+
+ false
+ else
+ require File.expand_path argument
+
+ false
+ end
+end
+
+ARGV.replace argv
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rdoctask.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
new file mode 100755
index 00000000000..b6ae224a9ea
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
@@ -0,0 +1,234 @@
+# rake/rdoctask is deprecated in favor of rdoc/task
+
+if Rake.application
+ Rake.application.deprecate('require \'rake/rdoctask\'', 'require \'rdoc/task\' (in RDoc 2.4.2+)', __FILE__)
+end
+
+require 'rubygems'
+
+begin
+ gem 'rdoc'
+ require 'rdoc'
+ require 'rdoc/task'
+rescue LoadError, Gem::LoadError
+end
+
+# :stopdoc:
+
+if defined?(RDoc::Task) then
+ module Rake
+ RDocTask = RDoc::Task unless const_defined? :RDocTask
+ end
+else
+ require 'rake'
+ require 'rake/tasklib'
+
+ module Rake
+
+ # NOTE: Rake::RDocTask is deprecated in favor of RDoc:Task which is included
+ # in RDoc 2.4.2+. Use require 'rdoc/task' to require it.
+ #
+ # Create a documentation task that will generate the RDoc files for
+ # a project.
+ #
+ # The RDocTask will create the following targets:
+ #
+ # [rdoc]
+ # Main task for this RDOC task.
+ #
+ # [:clobber_rdoc]
+ # Delete all the rdoc files. This target is automatically
+ # added to the main clobber target.
+ #
+ # [:rerdoc]
+ # Rebuild the rdoc files from scratch, even if they are not out
+ # of date.
+ #
+ # Simple Example:
+ #
+ # Rake::RDocTask.new do |rd|
+ # rd.main = "README.rdoc"
+ # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
+ # end
+ #
+ # The +rd+ object passed to the block is an RDocTask object. See the
+ # attributes list for the RDocTask class for available customization options.
+ #
+ # == Specifying different task names
+ #
+ # You may wish to give the task a different name, such as if you are
+ # generating two sets of documentation. For instance, if you want to have a
+ # development set of documentation including private methods:
+ #
+ # Rake::RDocTask.new(:rdoc_dev) do |rd|
+ # rd.main = "README.doc"
+ # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
+ # rd.options << "--all"
+ # end
+ #
+ # The tasks would then be named :rdoc_dev, :clobber_rdoc_dev, and
+ # :rerdoc_dev.
+ #
+ # If you wish to have completely different task names, then pass a Hash as
+ # first argument. With the :rdoc, :clobber_rdoc and
+ # :rerdoc options, you can customize the task names to your liking.
+ # For example:
+ #
+ # Rake::RDocTask.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force")
+ #
+ # This will create the tasks :rdoc, :rdoc_clean and
+ # :rdoc:force.
+ #
+ class RDocTask < TaskLib
+ # Name of the main, top level task. (default is :rdoc)
+ attr_accessor :name
+
+ # Name of directory to receive the html output files. (default is "html")
+ attr_accessor :rdoc_dir
+
+ # Title of RDoc documentation. (defaults to rdoc's default)
+ attr_accessor :title
+
+ # Name of file to be used as the main, top level file of the
+ # RDoc. (default is none)
+ attr_accessor :main
+
+ # Name of template to be used by rdoc. (defaults to rdoc's default)
+ attr_accessor :template
+
+ # List of files to be included in the rdoc generation. (default is [])
+ attr_accessor :rdoc_files
+
+ # Additional list of options to be passed rdoc. (default is [])
+ attr_accessor :options
+
+ # Whether to run the rdoc process as an external shell (default is false)
+ attr_accessor :external
+
+ attr_accessor :inline_source
+
+ # Create an RDoc task with the given name. See the RDocTask class overview
+ # for documentation.
+ def initialize(name = :rdoc) # :yield: self
+ if name.is_a?(Hash)
+ invalid_options = name.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc]
+ if !invalid_options.empty?
+ raise ArgumentError, "Invalid option(s) passed to RDocTask.new: #{invalid_options.join(", ")}"
+ end
+ end
+
+ @name = name
+ @rdoc_files = Rake::FileList.new
+ @rdoc_dir = 'html'
+ @main = nil
+ @title = nil
+ @template = nil
+ @external = false
+ @inline_source = true
+ @options = []
+ yield self if block_given?
+ define
+ end
+
+ # Create the tasks defined by this task lib.
+ def define
+ if rdoc_task_name != "rdoc"
+ desc "Build the RDOC HTML Files"
+ else
+ desc "Build the #{rdoc_task_name} HTML Files"
+ end
+ task rdoc_task_name
+
+ desc "Force a rebuild of the RDOC files"
+ task rerdoc_task_name => [clobber_task_name, rdoc_task_name]
+
+ desc "Remove rdoc products"
+ task clobber_task_name do
+ rm_r rdoc_dir rescue nil
+ end
+
+ task :clobber => [clobber_task_name]
+
+ directory @rdoc_dir
+ task rdoc_task_name => [rdoc_target]
+ file rdoc_target => @rdoc_files + [Rake.application.rakefile] do
+ rm_r @rdoc_dir rescue nil
+ @before_running_rdoc.call if @before_running_rdoc
+ args = option_list + @rdoc_files
+ if @external
+ argstring = args.join(' ')
+ sh %{ruby -Ivendor vendor/rd #{argstring}}
+ else
+ require 'rdoc/rdoc'
+ RDoc::RDoc.new.document(args)
+ end
+ end
+ self
+ end
+
+ def option_list
+ result = @options.dup
+ result << "-o" << @rdoc_dir
+ result << "--main" << quote(main) if main
+ result << "--title" << quote(title) if title
+ result << "-T" << quote(template) if template
+ result << "--inline-source" if inline_source && !@options.include?("--inline-source") && !@options.include?("-S")
+ result
+ end
+
+ def quote(str)
+ if @external
+ "'#{str}'"
+ else
+ str
+ end
+ end
+
+ def option_string
+ option_list.join(' ')
+ end
+
+ # The block passed to this method will be called just before running the
+ # RDoc generator. It is allowed to modify RDocTask attributes inside the
+ # block.
+ def before_running_rdoc(&block)
+ @before_running_rdoc = block
+ end
+
+ private
+
+ def rdoc_target
+ "#{rdoc_dir}/index.html"
+ end
+
+ def rdoc_task_name
+ case name
+ when Hash
+ (name[:rdoc] || "rdoc").to_s
+ else
+ name.to_s
+ end
+ end
+
+ def clobber_task_name
+ case name
+ when Hash
+ (name[:clobber_rdoc] || "clobber_rdoc").to_s
+ else
+ "clobber_#{name}"
+ end
+ end
+
+ def rerdoc_task_name
+ case name
+ when Hash
+ (name[:rerdoc] || "rerdoc").to_s
+ else
+ "re#{name}"
+ end
+ end
+
+ end
+ end
+end
+
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb
new file mode 100755
index 00000000000..9e411ed51a3
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb
@@ -0,0 +1,25 @@
+# Local Rake override to fix bug in Ruby 0.8.2
+module Test # :nodoc:
+ # Local Rake override to fix bug in Ruby 0.8.2
+ module Unit # :nodoc:
+ # Local Rake override to fix bug in Ruby 0.8.2
+ module Collector # :nodoc:
+ # Local Rake override to fix bug in Ruby 0.8.2
+ class Dir # :nodoc:
+ undef collect_file
+ def collect_file(name, suites, already_gathered) # :nodoc:
+ dir = File.dirname(File.expand_path(name))
+ $:.unshift(dir) unless $:.first == dir
+ if(@req)
+ @req.require(name)
+ else
+ require(name)
+ end
+ find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)}
+ ensure
+ $:.delete_at $:.rindex(dir)
+ end
+ end
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb
new file mode 100755
index 00000000000..da4318da9dc
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb
@@ -0,0 +1,20 @@
+
+module Rake
+
+ # Error indicating a recursion overflow error in task selection.
+ class RuleRecursionOverflowError < StandardError
+ def initialize(*args)
+ super
+ @targets = []
+ end
+
+ def add_target(target)
+ @targets << target
+ end
+
+ def message
+ super + ": [" + @targets.reverse.join(' => ') + "]"
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/runtest.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/runtest.rb
new file mode 100755
index 00000000000..2b98a60caef
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/runtest.rb
@@ -0,0 +1,21 @@
+require 'test/unit'
+require 'test/unit/assertions'
+
+module Rake
+ include Test::Unit::Assertions
+
+ def run_tests(pattern='test/test*.rb', log_enabled=false)
+ Dir["#{pattern}"].each { |fn|
+ $stderr.puts fn if log_enabled
+ begin
+ require fn
+ rescue Exception => ex
+ $stderr.puts "Error in #{fn}: #{ex.message}"
+ $stderr.puts ex.backtrace
+ assert false
+ end
+ }
+ end
+
+ extend self
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task.rb
new file mode 100755
index 00000000000..f977d18711c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task.rb
@@ -0,0 +1,327 @@
+require 'rake/invocation_exception_mixin'
+
+module Rake
+
+ # #########################################################################
+ # A Task is the basic unit of work in a Rakefile. Tasks have associated
+ # actions (possibly more than one) and a list of prerequisites. When
+ # invoked, a task will first ensure that all of its prerequisites have an
+ # opportunity to run and then it will execute its own actions.
+ #
+ # Tasks are not usually created directly using the new method, but rather
+ # use the +file+ and +task+ convenience methods.
+ #
+ class Task
+ # List of prerequisites for a task.
+ attr_reader :prerequisites
+
+ # List of actions attached to a task.
+ attr_reader :actions
+
+ # Application owning this task.
+ attr_accessor :application
+
+ # Comment for this task. Restricted to a single line of no more than 50
+ # characters.
+ attr_reader :comment
+
+ # Full text of the (possibly multi-line) comment.
+ attr_reader :full_comment
+
+ # Array of nested namespaces names used for task lookup by this task.
+ attr_reader :scope
+
+ # File/Line locations of each of the task definitions for this
+ # task (only valid if the task was defined with the detect
+ # location option set).
+ attr_reader :locations
+
+ # Return task name
+ def to_s
+ name
+ end
+
+ def inspect
+ "<#{self.class} #{name} => [#{prerequisites.join(', ')}]>"
+ end
+
+ # List of sources for task.
+ attr_writer :sources
+ def sources
+ @sources ||= []
+ end
+
+ # List of prerequisite tasks
+ def prerequisite_tasks
+ prerequisites.collect { |pre| lookup_prerequisite(pre) }
+ end
+
+ def lookup_prerequisite(prerequisite_name)
+ application[prerequisite_name, @scope]
+ end
+ private :lookup_prerequisite
+
+ # First source from a rule (nil if no sources)
+ def source
+ @sources.first if defined?(@sources)
+ end
+
+ # Create a task named +task_name+ with no actions or prerequisites. Use
+ # +enhance+ to add actions and prerequisites.
+ def initialize(task_name, app)
+ @name = task_name.to_s
+ @prerequisites = []
+ @actions = []
+ @already_invoked = false
+ @full_comment = nil
+ @comment = nil
+ @lock = Monitor.new
+ @application = app
+ @scope = app.current_scope
+ @arg_names = nil
+ @locations = []
+ end
+
+ # Enhance a task with prerequisites or actions. Returns self.
+ def enhance(deps=nil, &block)
+ @prerequisites |= deps if deps
+ @actions << block if block_given?
+ self
+ end
+
+ # Name of the task, including any namespace qualifiers.
+ def name
+ @name.to_s
+ end
+
+ # Name of task with argument list description.
+ def name_with_args # :nodoc:
+ if arg_description
+ "#{name}#{arg_description}"
+ else
+ name
+ end
+ end
+
+ # Argument description (nil if none).
+ def arg_description # :nodoc:
+ @arg_names ? "[#{(arg_names || []).join(',')}]" : nil
+ end
+
+ # Name of arguments for this task.
+ def arg_names
+ @arg_names || []
+ end
+
+ # Reenable the task, allowing its tasks to be executed if the task
+ # is invoked again.
+ def reenable
+ @already_invoked = false
+ end
+
+ # Clear the existing prerequisites and actions of a rake task.
+ def clear
+ clear_prerequisites
+ clear_actions
+ self
+ end
+
+ # Clear the existing prerequisites of a rake task.
+ def clear_prerequisites
+ prerequisites.clear
+ self
+ end
+
+ # Clear the existing actions on a rake task.
+ def clear_actions
+ actions.clear
+ self
+ end
+
+ # Invoke the task if it is needed. Prerequisites are invoked first.
+ def invoke(*args)
+ task_args = TaskArguments.new(arg_names, args)
+ invoke_with_call_chain(task_args, InvocationChain::EMPTY)
+ end
+
+ # Same as invoke, but explicitly pass a call chain to detect
+ # circular dependencies.
+ def invoke_with_call_chain(task_args, invocation_chain) # :nodoc:
+ new_chain = InvocationChain.append(self, invocation_chain)
+ @lock.synchronize do
+ if application.options.trace
+ $stderr.puts "** Invoke #{name} #{format_trace_flags}"
+ end
+ return if @already_invoked
+ @already_invoked = true
+ invoke_prerequisites(task_args, new_chain)
+ execute(task_args) if needed?
+ end
+ rescue Exception => ex
+ add_chain_to(ex, new_chain)
+ raise ex
+ end
+ protected :invoke_with_call_chain
+
+ def add_chain_to(exception, new_chain)
+ exception.extend(InvocationExceptionMixin) unless exception.respond_to?(:chain)
+ exception.chain = new_chain if exception.chain.nil?
+ end
+ private :add_chain_to
+
+ # Invoke all the prerequisites of a task.
+ def invoke_prerequisites(task_args, invocation_chain) # :nodoc:
+ prerequisite_tasks.each { |prereq|
+ prereq_args = task_args.new_scope(prereq.arg_names)
+ prereq.invoke_with_call_chain(prereq_args, invocation_chain)
+ }
+ end
+
+ # Format the trace flags for display.
+ def format_trace_flags
+ flags = []
+ flags << "first_time" unless @already_invoked
+ flags << "not_needed" unless needed?
+ flags.empty? ? "" : "(" + flags.join(", ") + ")"
+ end
+ private :format_trace_flags
+
+ # Execute the actions associated with this task.
+ def execute(args=nil)
+ args ||= EMPTY_TASK_ARGS
+ if application.options.dryrun
+ $stderr.puts "** Execute (dry run) #{name}"
+ return
+ end
+ if application.options.trace
+ $stderr.puts "** Execute #{name}"
+ end
+ application.enhance_with_matching_rule(name) if @actions.empty?
+ @actions.each do |act|
+ case act.arity
+ when 1
+ act.call(self)
+ else
+ act.call(self, args)
+ end
+ end
+ end
+
+ # Is this task needed?
+ def needed?
+ true
+ end
+
+ # Timestamp for this task. Basic tasks return the current time for their
+ # time stamp. Other tasks can be more sophisticated.
+ def timestamp
+ prerequisite_tasks.collect { |pre| pre.timestamp }.max || Time.now
+ end
+
+ # Add a description to the task. The description can consist of an option
+ # argument list (enclosed brackets) and an optional comment.
+ def add_description(description)
+ return if ! description
+ comment = description.strip
+ add_comment(comment) if comment && ! comment.empty?
+ end
+
+ # Writing to the comment attribute is the same as adding a description.
+ def comment=(description)
+ add_description(description)
+ end
+
+ # Add a comment to the task. If a comment already exists, separate
+ # the new comment with " / ".
+ def add_comment(comment)
+ if @full_comment
+ @full_comment << " / "
+ else
+ @full_comment = ''
+ end
+ @full_comment << comment
+ if @full_comment =~ /\A([^.]+?\.)( |$)/
+ @comment = $1
+ else
+ @comment = @full_comment
+ end
+ end
+ private :add_comment
+
+ # Set the names of the arguments for this task. +args+ should be
+ # an array of symbols, one for each argument name.
+ def set_arg_names(args)
+ @arg_names = args.map { |a| a.to_sym }
+ end
+
+ # Return a string describing the internal state of a task. Useful for
+ # debugging.
+ def investigation
+ result = "------------------------------\n"
+ result << "Investigating #{name}\n"
+ result << "class: #{self.class}\n"
+ result << "task needed: #{needed?}\n"
+ result << "timestamp: #{timestamp}\n"
+ result << "pre-requisites: \n"
+ prereqs = prerequisite_tasks
+ prereqs.sort! {|a,b| a.timestamp <=> b.timestamp}
+ prereqs.each do |p|
+ result << "--#{p.name} (#{p.timestamp})\n"
+ end
+ latest_prereq = prerequisite_tasks.collect { |pre| pre.timestamp }.max
+ result << "latest-prerequisite time: #{latest_prereq}\n"
+ result << "................................\n\n"
+ return result
+ end
+
+ # ----------------------------------------------------------------
+ # Rake Module Methods
+ #
+ class << self
+
+ # Clear the task list. This cause rake to immediately forget all the
+ # tasks that have been assigned. (Normally used in the unit tests.)
+ def clear
+ Rake.application.clear
+ end
+
+ # List of all defined tasks.
+ def tasks
+ Rake.application.tasks
+ end
+
+ # Return a task with the given name. If the task is not currently
+ # known, try to synthesize one from the defined rules. If no rules are
+ # found, but an existing file matches the task name, assume it is a file
+ # task with no dependencies or actions.
+ def [](task_name)
+ Rake.application[task_name]
+ end
+
+ # TRUE if the task name is already defined.
+ def task_defined?(task_name)
+ Rake.application.lookup(task_name) != nil
+ end
+
+ # Define a task given +args+ and an option block. If a rule with the
+ # given name already exists, the prerequisites and actions are added to
+ # the existing task. Returns the defined task.
+ def define_task(*args, &block)
+ Rake.application.define_task(self, *args, &block)
+ end
+
+ # Define a rule for synthesizing tasks.
+ def create_rule(*args, &block)
+ Rake.application.create_rule(*args, &block)
+ end
+
+ # Apply the scope to the task name according to the rules for
+ # this kind of task. Generic tasks will accept the scope as
+ # part of the name.
+ def scope_name(scope, task_name)
+ (scope + [task_name]).join(':')
+ end
+
+ end # class << Rake::Task
+ end # class Rake::Task
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb
new file mode 100755
index 00000000000..3e1dda64dba
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb
@@ -0,0 +1,7 @@
+module Rake
+
+ # Error indicating an ill-formed task declaration.
+ class TaskArgumentError < ArgumentError
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_arguments.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_arguments.rb
new file mode 100755
index 00000000000..02d01b99f98
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_arguments.rb
@@ -0,0 +1,78 @@
+module Rake
+
+ ####################################################################
+ # TaskArguments manage the arguments passed to a task.
+ #
+ class TaskArguments
+ include Enumerable
+
+ attr_reader :names
+
+ # Create a TaskArgument object with a list of named arguments
+ # (given by :names) and a set of associated values (given by
+ # :values). :parent is the parent argument object.
+ def initialize(names, values, parent=nil)
+ @names = names
+ @parent = parent
+ @hash = {}
+ names.each_with_index { |name, i|
+ @hash[name.to_sym] = values[i] unless values[i].nil?
+ }
+ end
+
+ # Create a new argument scope using the prerequisite argument
+ # names.
+ def new_scope(names)
+ values = names.collect { |n| self[n] }
+ self.class.new(names, values, self)
+ end
+
+ # Find an argument value by name or index.
+ def [](index)
+ lookup(index.to_sym)
+ end
+
+ # Specify a hash of default values for task arguments. Use the
+ # defaults only if there is no specific value for the given
+ # argument.
+ def with_defaults(defaults)
+ @hash = defaults.merge(@hash)
+ end
+
+ def each(&block)
+ @hash.each(&block)
+ end
+
+ def values_at(*keys)
+ keys.map { |k| lookup(k) }
+ end
+
+ def method_missing(sym, *args, &block)
+ lookup(sym.to_sym)
+ end
+
+ def to_hash
+ @hash
+ end
+
+ def to_s
+ @hash.inspect
+ end
+
+ def inspect
+ to_s
+ end
+
+ protected
+
+ def lookup(name)
+ if @hash.has_key?(name)
+ @hash[name]
+ elsif @parent
+ @parent.lookup(name)
+ end
+ end
+ end
+
+ EMPTY_TASK_ARGS = TaskArguments.new([], [])
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_manager.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_manager.rb
new file mode 100755
index 00000000000..4c3c26aa3a4
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/task_manager.rb
@@ -0,0 +1,307 @@
+module Rake
+
+ # The TaskManager module is a mixin for managing tasks.
+ module TaskManager
+ # Track the last comment made in the Rakefile.
+ attr_accessor :last_description
+ alias :last_comment :last_description # Backwards compatibility
+
+ def initialize
+ super
+ @tasks = Hash.new
+ @rules = Array.new
+ @scope = Array.new
+ @last_description = nil
+ end
+
+ def create_rule(*args, &block)
+ pattern, _, deps = resolve_args(args)
+ pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern
+ @rules << [pattern, deps, block]
+ end
+
+ def define_task(task_class, *args, &block)
+ task_name, arg_names, deps = resolve_args(args)
+ task_name = task_class.scope_name(@scope, task_name)
+ deps = [deps] unless deps.respond_to?(:to_ary)
+ deps = deps.collect {|d| d.to_s }
+ task = intern(task_class, task_name)
+ task.set_arg_names(arg_names) unless arg_names.empty?
+ if Rake::TaskManager.record_task_metadata
+ add_location(task)
+ task.add_description(get_description(task))
+ end
+ task.enhance(deps, &block)
+ end
+
+ # Lookup a task. Return an existing task if found, otherwise
+ # create a task of the current type.
+ def intern(task_class, task_name)
+ @tasks[task_name.to_s] ||= task_class.new(task_name, self)
+ end
+
+ # Find a matching task for +task_name+.
+ def [](task_name, scopes=nil)
+ task_name = task_name.to_s
+ self.lookup(task_name, scopes) or
+ enhance_with_matching_rule(task_name) or
+ synthesize_file_task(task_name) or
+ fail "Don't know how to build task '#{task_name}'"
+ end
+
+ def synthesize_file_task(task_name)
+ return nil unless File.exist?(task_name)
+ define_task(Rake::FileTask, task_name)
+ end
+
+ # Resolve the arguments for a task/rule. Returns a triplet of
+ # [task_name, arg_name_list, prerequisites].
+ def resolve_args(args)
+ if args.last.is_a?(Hash)
+ deps = args.pop
+ resolve_args_with_dependencies(args, deps)
+ else
+ resolve_args_without_dependencies(args)
+ end
+ end
+
+ # Resolve task arguments for a task or rule when there are no
+ # dependencies declared.
+ #
+ # The patterns recognized by this argument resolving function are:
+ #
+ # task :t
+ # task :t, [:a]
+ # task :t, :a (deprecated)
+ #
+ def resolve_args_without_dependencies(args)
+ task_name = args.shift
+ if args.size == 1 && args.first.respond_to?(:to_ary)
+ arg_names = args.first.to_ary
+ else
+ arg_names = args
+ end
+ [task_name, arg_names, []]
+ end
+ private :resolve_args_without_dependencies
+
+ # Resolve task arguments for a task or rule when there are
+ # dependencies declared.
+ #
+ # The patterns recognized by this argument resolving function are:
+ #
+ # task :t => [:d]
+ # task :t, [a] => [:d]
+ # task :t, :needs => [:d] (deprecated)
+ # task :t, :a, :needs => [:d] (deprecated)
+ #
+ def resolve_args_with_dependencies(args, hash) # :nodoc:
+ fail "Task Argument Error" if hash.size != 1
+ key, value = hash.map { |k, v| [k,v] }.first
+ if args.empty?
+ task_name = key
+ arg_names = []
+ deps = value
+ elsif key == :needs
+ Rake.application.deprecate(
+ "task :t, arg, :needs => [deps]",
+ "task :t, [args] => [deps]",
+ caller.detect { |c| c !~ /\blib\/rake\b/ })
+ task_name = args.shift
+ arg_names = args
+ deps = value
+ else
+ task_name = args.shift
+ arg_names = key
+ deps = value
+ end
+ deps = [deps] unless deps.respond_to?(:to_ary)
+ [task_name, arg_names, deps]
+ end
+ private :resolve_args_with_dependencies
+
+ # If a rule can be found that matches the task name, enhance the
+ # task with the prerequisites and actions from the rule. Set the
+ # source attribute of the task appropriately for the rule. Return
+ # the enhanced task or nil of no rule was found.
+ def enhance_with_matching_rule(task_name, level=0)
+ fail Rake::RuleRecursionOverflowError,
+ "Rule Recursion Too Deep" if level >= 16
+ @rules.each do |pattern, extensions, block|
+ if pattern.match(task_name)
+ task = attempt_rule(task_name, extensions, block, level)
+ return task if task
+ end
+ end
+ nil
+ rescue Rake::RuleRecursionOverflowError => ex
+ ex.add_target(task_name)
+ fail ex
+ end
+
+ # List of all defined tasks in this application.
+ def tasks
+ @tasks.values.sort_by { |t| t.name }
+ end
+
+ # List of all the tasks defined in the given scope (and its
+ # sub-scopes).
+ def tasks_in_scope(scope)
+ prefix = scope.join(":")
+ tasks.select { |t|
+ /^#{prefix}:/ =~ t.name
+ }
+ end
+
+ # Clear all tasks in this application.
+ def clear
+ @tasks.clear
+ @rules.clear
+ end
+
+ # Lookup a task, using scope and the scope hints in the task name.
+ # This method performs straight lookups without trying to
+ # synthesize file tasks or rules. Special scope names (e.g. '^')
+ # are recognized. If no scope argument is supplied, use the
+ # current scope. Return nil if the task cannot be found.
+ def lookup(task_name, initial_scope=nil)
+ initial_scope ||= @scope
+ task_name = task_name.to_s
+ if task_name =~ /^rake:/
+ scopes = []
+ task_name = task_name.sub(/^rake:/, '')
+ elsif task_name =~ /^(\^+)/
+ scopes = initial_scope[0, initial_scope.size - $1.size]
+ task_name = task_name.sub(/^(\^+)/, '')
+ else
+ scopes = initial_scope
+ end
+ lookup_in_scope(task_name, scopes)
+ end
+
+ # Lookup the task name
+ def lookup_in_scope(name, scope)
+ n = scope.size
+ while n >= 0
+ tn = (scope[0,n] + [name]).join(':')
+ task = @tasks[tn]
+ return task if task
+ n -= 1
+ end
+ nil
+ end
+ private :lookup_in_scope
+
+ # Return the list of scope names currently active in the task
+ # manager.
+ def current_scope
+ @scope.dup
+ end
+
+ # Evaluate the block in a nested namespace named +name+. Create
+ # an anonymous namespace if +name+ is nil.
+ def in_namespace(name)
+ name ||= generate_name
+ @scope.push(name)
+ ns = NameSpace.new(self, @scope)
+ yield(ns)
+ ns
+ ensure
+ @scope.pop
+ end
+
+ private
+
+ # Add a location to the locations field of the given task.
+ def add_location(task)
+ loc = find_location
+ task.locations << loc if loc
+ task
+ end
+
+ # Find the location that called into the dsl layer.
+ def find_location
+ locations = caller
+ i = 0
+ while locations[i]
+ return locations[i+1] if locations[i] =~ /rake\/dsl_definition.rb/
+ i += 1
+ end
+ nil
+ end
+
+ # Generate an anonymous namespace name.
+ def generate_name
+ @seed ||= 0
+ @seed += 1
+ "_anon_#{@seed}"
+ end
+
+ def trace_rule(level, message)
+ $stderr.puts "#{" "*level}#{message}" if Rake.application.options.trace_rules
+ end
+
+ # Attempt to create a rule given the list of prerequisites.
+ def attempt_rule(task_name, extensions, block, level)
+ sources = make_sources(task_name, extensions)
+ prereqs = sources.collect { |source|
+ trace_rule level, "Attempting Rule #{task_name} => #{source}"
+ if File.exist?(source) || Rake::Task.task_defined?(source)
+ trace_rule level, "(#{task_name} => #{source} ... EXIST)"
+ source
+ elsif parent = enhance_with_matching_rule(source, level+1)
+ trace_rule level, "(#{task_name} => #{source} ... ENHANCE)"
+ parent.name
+ else
+ trace_rule level, "(#{task_name} => #{source} ... FAIL)"
+ return nil
+ end
+ }
+ task = FileTask.define_task({task_name => prereqs}, &block)
+ task.sources = prereqs
+ task
+ end
+
+ # Make a list of sources from the list of file name extensions /
+ # translation procs.
+ def make_sources(task_name, extensions)
+ result = extensions.collect { |ext|
+ case ext
+ when /%/
+ task_name.pathmap(ext)
+ when %r{/}
+ ext
+ when /^\./
+ task_name.ext(ext)
+ when String
+ ext
+ when Proc
+ if ext.arity == 1
+ ext.call(task_name)
+ else
+ ext.call
+ end
+ else
+ fail "Don't know how to handle rule dependent: #{ext.inspect}"
+ end
+ }
+ result.flatten
+ end
+
+
+ private
+
+ # Return the current description, clearing it in the process.
+ def get_description(task)
+ desc = @last_description
+ @last_description = nil
+ desc
+ end
+
+ class << self
+ attr_accessor :record_task_metadata
+ TaskManager.record_task_metadata = false
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/tasklib.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/tasklib.rb
new file mode 100755
index 00000000000..f1e17dad319
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/tasklib.rb
@@ -0,0 +1,22 @@
+require 'rake'
+
+module Rake
+
+ # Base class for Task Libraries.
+ class TaskLib
+ include Cloneable
+ include Rake::DSL
+
+ # Make a symbol by pasting two strings together.
+ #
+ # NOTE: DEPRECATED! This method is kinda stupid. I don't know why
+ # I didn't just use string interpolation. But now other task
+ # libraries depend on this so I can't remove it without breaking
+ # other people's code. So for now it stays for backwards
+ # compatibility. BUT DON'T USE IT.
+ def paste(a,b) # :nodoc:
+ (a.to_s + b.to_s).intern
+ end
+ end
+
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/testtask.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/testtask.rb
new file mode 100755
index 00000000000..04d3ae473a9
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/testtask.rb
@@ -0,0 +1,191 @@
+# Define a task library for running unit tests.
+
+require 'rake'
+require 'rake/tasklib'
+
+module Rake
+
+ # Create a task that runs a set of tests.
+ #
+ # Example:
+ #
+ # Rake::TestTask.new do |t|
+ # t.libs << "test"
+ # t.test_files = FileList['test/test*.rb']
+ # t.verbose = true
+ # end
+ #
+ # If rake is invoked with a "TEST=filename" command line option,
+ # then the list of test files will be overridden to include only the
+ # filename specified on the command line. This provides an easy way
+ # to run just one test.
+ #
+ # If rake is invoked with a "TESTOPTS=options" command line option,
+ # then the given options are passed to the test process after a
+ # '--'. This allows Test::Unit options to be passed to the test
+ # suite.
+ #
+ # Examples:
+ #
+ # rake test # run tests normally
+ # rake test TEST=just_one_file.rb # run just one test file.
+ # rake test TESTOPTS="-v" # run in verbose mode
+ # rake test TESTOPTS="--runner=fox" # use the fox test runner
+ #
+ class TestTask < TaskLib
+
+ # Name of test task. (default is :test)
+ attr_accessor :name
+
+ # List of directories to added to $LOAD_PATH before running the
+ # tests. (default is 'lib')
+ attr_accessor :libs
+
+ # True if verbose test output desired. (default is false)
+ attr_accessor :verbose
+
+ # Test options passed to the test suite. An explicit
+ # TESTOPTS=opts on the command line will override this. (default
+ # is NONE)
+ attr_accessor :options
+
+ # Request that the tests be run with the warning flag set.
+ # E.g. warning=true implies "ruby -w" used to run the tests.
+ attr_accessor :warning
+
+ # Glob pattern to match test files. (default is 'test/test*.rb')
+ attr_accessor :pattern
+
+ # Style of test loader to use. Options are:
+ #
+ # * :rake -- Rake provided test loading script (default).
+ # * :testrb -- Ruby provided test loading script.
+ # * :direct -- Load tests using command line loader.
+ #
+ attr_accessor :loader
+
+ # Array of commandline options to pass to ruby when running test loader.
+ attr_accessor :ruby_opts
+
+ # Explicitly define the list of test files to be included in a
+ # test. +list+ is expected to be an array of file names (a
+ # FileList is acceptable). If both +pattern+ and +test_files+ are
+ # used, then the list of test files is the union of the two.
+ def test_files=(list)
+ @test_files = list
+ end
+
+ # Create a testing task.
+ def initialize(name=:test)
+ @name = name
+ @libs = ["lib"]
+ @pattern = nil
+ @options = nil
+ @test_files = nil
+ @verbose = false
+ @warning = false
+ @loader = :rake
+ @ruby_opts = []
+ yield self if block_given?
+ @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil?
+ define
+ end
+
+ # Create the tasks defined by this task lib.
+ def define
+ desc "Run tests" + (@name==:test ? "" : " for #{@name}")
+ task @name do
+ FileUtilsExt.verbose(@verbose) do
+ ruby "#{ruby_opts_string} #{run_code} #{file_list_string} #{option_list}"
+ end
+ end
+ self
+ end
+
+ def option_list # :nodoc:
+ (ENV['TESTOPTS'] ||
+ ENV['TESTOPT'] ||
+ ENV['TEST_OPTS'] ||
+ ENV['TEST_OPT'] ||
+ @options ||
+ "")
+ end
+
+ def ruby_opts_string
+ opts = @ruby_opts.dup
+ opts.unshift( "-I\"#{lib_path}\"" ) unless @libs.empty?
+ opts.unshift( "-w" ) if @warning
+ opts.join(" ")
+ end
+
+ def lib_path
+ @libs.join(File::PATH_SEPARATOR)
+ end
+
+ def file_list_string
+ file_list.collect { |fn| "\"#{fn}\"" }.join(' ')
+ end
+
+ def file_list # :nodoc:
+ if ENV['TEST']
+ FileList[ ENV['TEST'] ]
+ else
+ result = []
+ result += @test_files.to_a if @test_files
+ result << @pattern if @pattern
+ result
+ end
+ end
+
+ def fix # :nodoc:
+ case ruby_version
+ when '1.8.2'
+ "\"#{find_file 'rake/ruby182_test_unit_fix'}\""
+ else
+ nil
+ end || ''
+ end
+
+ def ruby_version
+ RUBY_VERSION
+ end
+
+ def run_code
+ case @loader
+ when :direct
+ "-e \"ARGV.each{|f| require f}\""
+ when :testrb
+ "-S testrb #{fix}"
+ when :rake
+ "-I\"#{rake_lib_dir}\" \"#{rake_loader}\""
+ end
+ end
+
+ def rake_loader # :nodoc:
+ find_file('rake/rake_test_loader') or
+ fail "unable to find rake test loader"
+ end
+
+ def find_file(fn) # :nodoc:
+ $LOAD_PATH.each do |path|
+ file_path = File.join(path, "#{fn}.rb")
+ return file_path if File.exist? file_path
+ end
+ nil
+ end
+
+ def rake_lib_dir # :nodoc:
+ find_dir('rake') or
+ fail "unable to find rake lib"
+ end
+
+ def find_dir(fn) # :nodoc:
+ $LOAD_PATH.each do |path|
+ file_path = File.join(path, "#{fn}.rb")
+ return path if File.exist? file_path
+ end
+ nil
+ end
+
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/version.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/version.rb
new file mode 100755
index 00000000000..4e9f35fc809
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/version.rb
@@ -0,0 +1,8 @@
+module Rake
+ VERSION = '0.9.2.2'
+
+ module Version # :nodoc: all
+ MAJOR, MINOR, BUILD, PATCH = VERSION.split('.')
+ NUMBERS = [ MAJOR, MINOR, BUILD, PATCH ]
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/win32.rb b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/win32.rb
new file mode 100755
index 00000000000..98289a10b45
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/gems/rake-0.9.2.2/lib/rake/win32.rb
@@ -0,0 +1,55 @@
+
+module Rake
+ require 'rake/alt_system'
+
+ # Win 32 interface methods for Rake. Windows specific functionality
+ # will be placed here to collect that knowledge in one spot.
+ module Win32
+
+ # Error indicating a problem in locating the home directory on a
+ # Win32 system.
+ class Win32HomeError < RuntimeError
+ end
+
+ class << self
+ # True if running on a windows system.
+ def windows?
+ AltSystem::WINDOWS
+ end
+
+ # Run a command line on windows.
+ def rake_system(*cmd)
+ AltSystem.system(*cmd)
+ end
+
+ # The standard directory containing system wide rake files on
+ # Win 32 systems. Try the following environment variables (in
+ # order):
+ #
+ # * HOME
+ # * HOMEDRIVE + HOMEPATH
+ # * APPDATA
+ # * USERPROFILE
+ #
+ # If the above are not defined, the return nil.
+ def win32_system_dir #:nodoc:
+ win32_shared_path = ENV['HOME']
+ if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH']
+ win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH']
+ end
+
+ win32_shared_path ||= ENV['APPDATA']
+ win32_shared_path ||= ENV['USERPROFILE']
+ raise Win32HomeError, "Unable to determine home path environment variable." if
+ win32_shared_path.nil? or win32_shared_path.empty?
+ normalize(File.join(win32_shared_path, 'Rake'))
+ end
+
+ # Normalize a win32 path so that the slashes are all forward slashes.
+ def normalize(path)
+ path.gsub(/\\/, '/')
+ end
+
+ end
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/actionmailer-2.3.14.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/actionmailer-2.3.14.gemspec
new file mode 100755
index 00000000000..a963ba606ce
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/actionmailer-2.3.14.gemspec
@@ -0,0 +1,30 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "actionmailer"
+ s.version = "2.3.14"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["David Heinemeier Hansson"]
+ s.date = "2011-08-16"
+ s.description = "Makes it trivial to test and deliver emails sent from a single service layer."
+ s.email = "david@loudthinking.com"
+ s.homepage = "http://www.rubyonrails.org"
+ s.require_paths = ["lib"]
+ s.requirements = ["none"]
+ s.rubyforge_project = "actionmailer"
+ s.rubygems_version = "1.8.15"
+ s.summary = "Service layer for easy email delivery and testing."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/actionpack-2.3.14.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/actionpack-2.3.14.gemspec
new file mode 100755
index 00000000000..2db20164f7c
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/actionpack-2.3.14.gemspec
@@ -0,0 +1,33 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "actionpack"
+ s.version = "2.3.14"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["David Heinemeier Hansson"]
+ s.date = "2011-08-16"
+ s.description = "Eases web-request routing, handling, and response as a half-way front, half-way page controller. Implemented with specific emphasis on enabling easy unit/integration testing that doesn't require a browser."
+ s.email = "david@loudthinking.com"
+ s.homepage = "http://www.rubyonrails.org"
+ s.require_paths = ["lib"]
+ s.requirements = ["none"]
+ s.rubyforge_project = "actionpack"
+ s.rubygems_version = "1.8.15"
+ s.summary = "Web-flow and rendering framework putting the VC in MVC."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ s.add_runtime_dependency(%q, ["~> 1.1.0"])
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["~> 1.1.0"])
+ end
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["~> 1.1.0"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-2.3.14.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-2.3.14.gemspec
new file mode 100755
index 00000000000..ec3f0d35148
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-2.3.14.gemspec
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "activerecord"
+ s.version = "2.3.14"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["David Heinemeier Hansson"]
+ s.date = "2011-08-16"
+ s.description = "Implements the ActiveRecord pattern (Fowler, PoEAA) for ORM. It ties database tables and classes together for business objects, like Customer or Subscription, that can find, save, and destroy themselves without resorting to manual SQL."
+ s.email = "david@loudthinking.com"
+ s.extra_rdoc_files = ["README"]
+ s.files = ["README"]
+ s.homepage = "http://www.rubyonrails.org"
+ s.rdoc_options = ["--main", "README"]
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "activerecord"
+ s.rubygems_version = "1.8.15"
+ s.summary = "Implements the ActiveRecord pattern for ORM."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-jdbc-adapter-1.1.3.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-jdbc-adapter-1.1.3.gemspec
new file mode 100644
index 00000000000..3bcf7f860e5
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-jdbc-adapter-1.1.3.gemspec
@@ -0,0 +1,35 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "activerecord-jdbc-adapter"
+ s.version = "1.1.3"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["Nick Sieger, Ola Bini and JRuby contributors"]
+ s.date = "2011-07-26"
+ s.description = "activerecord-jdbc-adapter is a database adapter for Rails' ActiveRecord\ncomponent that can be used with JRuby[http://www.jruby.org/]. It allows use of\nvirtually any JDBC-compliant database with your JRuby on Rails application."
+ s.email = "nick@nicksieger.com, ola.bini@gmail.com"
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt", "LICENSE.txt"]
+ s.files = ["History.txt", "Manifest.txt", "README.txt", "LICENSE.txt"]
+ s.homepage = "http://jruby-extras.rubyforge.org/activerecord-jdbc-adapter"
+ s.rdoc_options = ["--main", "README.txt", "-SHN", "-f", "darkfish"]
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "jruby-extras"
+ s.rubygems_version = "1.8.23"
+ s.summary = "JDBC adapter for ActiveRecord, for use within JRuby on Rails."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_development_dependency(%q, [">= 2.0.4"])
+ s.add_development_dependency(%q, [">= 2.9.4"])
+ else
+ s.add_dependency(%q, [">= 2.0.4"])
+ s.add_dependency(%q, [">= 2.9.4"])
+ end
+ else
+ s.add_dependency(%q, [">= 2.0.4"])
+ s.add_dependency(%q, [">= 2.9.4"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-oracle_enhanced-adapter-1.4.0.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-oracle_enhanced-adapter-1.4.0.gemspec
new file mode 100644
index 00000000000..127b6926fd2
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activerecord-oracle_enhanced-adapter-1.4.0.gemspec
@@ -0,0 +1,57 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "activerecord-oracle_enhanced-adapter"
+ s.version = "1.4.0"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["Raimonds Simanovskis"]
+ s.date = "2011-08-08"
+ s.description = "Oracle \"enhanced\" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.\nThis adapter is superset of original ActiveRecord Oracle adapter.\n"
+ s.email = "raimonds.simanovskis@gmail.com"
+ s.extra_rdoc_files = ["README.md"]
+ s.files = ["README.md"]
+ s.homepage = "http://github.com/rsim/oracle-enhanced"
+ s.require_paths = ["lib"]
+ s.rubygems_version = "1.8.23"
+ s.summary = "Oracle enhanced adapter for ActiveRecord"
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_development_dependency(%q, ["~> 1.5.1"])
+ s.add_development_dependency(%q, ["~> 2.4"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0.4.4"])
+ s.add_development_dependency(%q, ["~> 2.0.4"])
+ else
+ s.add_dependency(%q, ["~> 1.5.1"])
+ s.add_dependency(%q, ["~> 2.4"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0.4.4"])
+ s.add_dependency(%q, ["~> 2.0.4"])
+ end
+ else
+ s.add_dependency(%q, ["~> 1.5.1"])
+ s.add_dependency(%q, ["~> 2.4"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0.4.4"])
+ s.add_dependency(%q, ["~> 2.0.4"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activeresource-2.3.14.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activeresource-2.3.14.gemspec
new file mode 100755
index 00000000000..3ad5af59c88
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activeresource-2.3.14.gemspec
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "activeresource"
+ s.version = "2.3.14"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["David Heinemeier Hansson"]
+ s.date = "2011-08-16"
+ s.description = "Wraps web resources in model classes that can be manipulated through XML over REST."
+ s.email = "david@loudthinking.com"
+ s.extra_rdoc_files = ["README"]
+ s.files = ["README"]
+ s.homepage = "http://www.rubyonrails.org"
+ s.rdoc_options = ["--main", "README"]
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "activeresource"
+ s.rubygems_version = "1.8.15"
+ s.summary = "Think Active Record for web resources."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+ else
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activesupport-2.3.14.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activesupport-2.3.14.gemspec
new file mode 100755
index 00000000000..0b5b0c59e0b
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/activesupport-2.3.14.gemspec
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "activesupport"
+ s.version = "2.3.14"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["David Heinemeier Hansson"]
+ s.date = "2011-08-16"
+ s.description = "Utility library which carries commonly used classes and goodies from the Rails framework"
+ s.email = "david@loudthinking.com"
+ s.homepage = "http://www.rubyonrails.org"
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "activesupport"
+ s.rubygems_version = "1.8.15"
+ s.summary = "Support and utility classes used by the Rails framework."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ else
+ end
+ else
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/color-tools-1.3.0.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/color-tools-1.3.0.gemspec
new file mode 100644
index 00000000000..c99bc8f9b49
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/color-tools-1.3.0.gemspec
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "color-tools"
+ s.version = "1.3.0"
+
+ s.required_rubygems_version = nil if s.respond_to? :required_rubygems_version=
+ s.authors = ["Austin Ziegler"]
+ s.autorequire = "color"
+ s.cert_chain = nil
+ s.date = "2005-08-07"
+ s.description = "color-tools is a Ruby library to provide RGB, CMYK, and other colourspace support to applications that require it. It also provides 152 named RGB colours. It offers 152 named RGB colours (184 with spelling variations) that are commonly supported and used in HTML, SVG, and X11 applications. A technique for generating a monochromatic contrasting palette is also included."
+ s.email = "austin@rubyforge.org"
+ s.extra_rdoc_files = ["README", "Install", "Changelog"]
+ s.files = ["README", "Install", "Changelog"]
+ s.homepage = "http://rubyforge.org/projects/ruby-pdf"
+ s.rdoc_options = ["--title", "color-tools", "--main", "README", "--line-numbers"]
+ s.require_paths = ["lib"]
+ s.required_ruby_version = Gem::Requirement.new("> 0.0.0")
+ s.rubyforge_project = "ruby-pdf"
+ s.rubygems_version = "1.8.23"
+ s.summary = "color-tools provides colour space definition and manpiulation as well as commonly named RGB colours."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 1
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ else
+ end
+ else
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/fastercsv-1.4.0.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/fastercsv-1.4.0.gemspec
new file mode 100644
index 00000000000..d618cf5ff04
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/fastercsv-1.4.0.gemspec
@@ -0,0 +1,29 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "fastercsv"
+ s.version = "1.4.0"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["James Edward Gray II"]
+ s.date = "2008-09-10"
+ s.description = "FasterCSV is intended as a complete replacement to the CSV standard library. It is significantly faster and smaller while still being pure Ruby code. It also strives for a better interface."
+ s.email = "james@grayproductions.net"
+ s.extra_rdoc_files = ["AUTHORS", "COPYING", "README", "INSTALL", "TODO", "CHANGELOG", "LICENSE"]
+ s.files = ["AUTHORS", "COPYING", "README", "INSTALL", "TODO", "CHANGELOG", "LICENSE"]
+ s.homepage = "http://fastercsv.rubyforge.org"
+ s.rdoc_options = ["--title", "FasterCSV Documentation", "--main", "README"]
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "fastercsv"
+ s.rubygems_version = "1.8.23"
+ s.summary = "FasterCSV is CSV, but faster, smaller, and cleaner."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 2
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ else
+ end
+ else
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/i18n-0.4.2.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/i18n-0.4.2.gemspec
new file mode 100644
index 00000000000..b70d5cbe6c6
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/i18n-0.4.2.gemspec
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "i18n"
+ s.version = "0.4.2"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
+ s.authors = ["Sven Fuchs", "Joshua Harvey", "Matt Aimonetti", "Stephan Soller", "Saimon Moore"]
+ s.date = "2010-10-26"
+ s.description = "New wave Internationalization support for Ruby."
+ s.email = "rails-i18n@googlegroups.com"
+ s.homepage = "http://github.com/svenfuchs/i18n"
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "[none]"
+ s.rubygems_version = "1.8.23"
+ s.summary = "New wave Internationalization support for Ruby"
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ else
+ end
+ else
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/jruby-openssl-0.7.4.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/jruby-openssl-0.7.4.gemspec
new file mode 100644
index 00000000000..2ffa35257d3
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/jruby-openssl-0.7.4.gemspec
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "jruby-openssl"
+ s.version = "0.7.4"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["Ola Bini and JRuby contributors"]
+ s.date = "2011-04-27"
+ s.description = "JRuby-OpenSSL is an add-on gem for JRuby that emulates the Ruby OpenSSL native library."
+ s.email = "ola.bini@gmail.com"
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt", "License.txt"]
+ s.files = ["History.txt", "Manifest.txt", "README.txt", "License.txt"]
+ s.homepage = "http://jruby-extras.rubyforge.org/jruby-openssl"
+ s.rdoc_options = ["--main", "README.txt"]
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "jruby-extras"
+ s.rubygems_version = "1.8.23"
+ s.summary = "OpenSSL add-on for JRuby"
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_runtime_dependency(%q, [">= 0"])
+ else
+ s.add_dependency(%q, [">= 0"])
+ end
+ else
+ s.add_dependency(%q, [">= 0"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/json-jruby-1.2.3-universal-java-1.6.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/json-jruby-1.2.3-universal-java-1.6.gemspec
new file mode 100644
index 00000000000..c00a363df52
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/json-jruby-1.2.3-universal-java-1.6.gemspec
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "json-jruby"
+ s.version = "1.2.3"
+ s.platform = "universal-java-1.6"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["Daniel Luz"]
+ s.date = "2010-03-14"
+ s.email = "mernen+rubyforge@gmail.com"
+ s.homepage = "http://rubyforge.org/projects/json-jruby/"
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "json-jruby"
+ s.rubygems_version = "1.8.23"
+ s.summary = "A JSON implementation as a JRuby extension"
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ else
+ end
+ else
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rack-1.1.3.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rack-1.1.3.gemspec
new file mode 100755
index 00000000000..2941436e72e
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rack-1.1.3.gemspec
@@ -0,0 +1,50 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "rack"
+ s.version = "1.1.3"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["Christian Neukirchen"]
+ s.date = "2011-12-28"
+ s.description = "Rack provides minimal, modular and adaptable interface for developing\nweb applications in Ruby. By wrapping HTTP requests and responses in\nthe simplest way possible, it unifies and distills the API for web\nservers, web frameworks, and software in between (the so-called\nmiddleware) into a single method call.\n\nAlso see http://rack.rubyforge.org.\n"
+ s.email = "chneukirchen@gmail.com"
+ s.executables = ["rackup"]
+ s.extra_rdoc_files = ["README", "SPEC", "KNOWN-ISSUES"]
+ s.files = ["bin/rackup", "README", "SPEC", "KNOWN-ISSUES"]
+ s.homepage = "http://rack.rubyforge.org"
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "rack"
+ s.rubygems_version = "1.8.15"
+ s.summary = "a modular Ruby webserver interface"
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, ["< 2"])
+ s.add_development_dependency(%q, ["< 1.6"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, [">= 0"])
+ s.add_development_dependency(%q, ["< 1.2"])
+ else
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, ["< 2"])
+ s.add_dependency(%q, ["< 1.6"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, ["< 1.2"])
+ end
+ else
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, ["< 2"])
+ s.add_dependency(%q, ["< 1.6"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, [">= 0"])
+ s.add_dependency(%q, ["< 1.2"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rails-2.3.14.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rails-2.3.14.gemspec
new file mode 100644
index 00000000000..7d0319df030
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rails-2.3.14.gemspec
@@ -0,0 +1,47 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "rails"
+ s.version = "2.3.14"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.authors = ["David Heinemeier Hansson"]
+ s.date = "2011-08-16"
+ s.description = " Rails is a framework for building web-application using CGI, FCGI, mod_ruby, or WEBrick\n on top of either MySQL, PostgreSQL, SQLite, DB2, SQL Server, or Oracle with eRuby- or Builder-based templates.\n"
+ s.email = "david@loudthinking.com"
+ s.executables = ["rails"]
+ s.files = ["bin/rails"]
+ s.homepage = "http://www.rubyonrails.org"
+ s.rdoc_options = ["--exclude", "."]
+ s.require_paths = ["lib"]
+ s.rubyforge_project = "rails"
+ s.rubygems_version = "1.8.15"
+ s.summary = "Web-application framework with template engine, control-flow layer, and ORM."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_runtime_dependency(%q, [">= 0.8.3"])
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ s.add_runtime_dependency(%q, ["= 2.3.14"])
+ else
+ s.add_dependency(%q, [">= 0.8.3"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+ else
+ s.add_dependency(%q, [">= 0.8.3"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ s.add_dependency(%q, ["= 2.3.14"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rake-0.9.2.2.gemspec b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rake-0.9.2.2.gemspec
new file mode 100755
index 00000000000..b6d5eb5b8de
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/gems/specifications/rake-0.9.2.2.gemspec
@@ -0,0 +1,34 @@
+# -*- encoding: utf-8 -*-
+
+Gem::Specification.new do |s|
+ s.name = "rake"
+ s.version = "0.9.2.2"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2") if s.respond_to? :required_rubygems_version=
+ s.authors = ["Jim Weirich"]
+ s.date = "2011-10-22"
+ s.description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies arespecified in standard Ruby syntax."
+ s.email = "jim@weirichhouse.org"
+ s.executables = ["rake"]
+ s.extra_rdoc_files = ["README.rdoc", "MIT-LICENSE", "TODO", "CHANGES", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc", "doc/release_notes/rake-0.9.0.rdoc", "doc/release_notes/rake-0.9.1.rdoc", "doc/release_notes/rake-0.9.2.rdoc"]
+ s.files = ["bin/rake", "README.rdoc", "MIT-LICENSE", "TODO", "CHANGES", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc", "doc/release_notes/rake-0.9.0.rdoc", "doc/release_notes/rake-0.9.1.rdoc", "doc/release_notes/rake-0.9.2.rdoc"]
+ s.homepage = "http://rake.rubyforge.org"
+ s.rdoc_options = ["--line-numbers", "--show-hash", "--main", "README.rdoc", "--title", "Rake -- Ruby Make"]
+ s.require_paths = ["lib"]
+ s.required_ruby_version = Gem::Requirement.new(">= 1.8.6")
+ s.rubyforge_project = "rake"
+ s.rubygems_version = "1.8.15"
+ s.summary = "Ruby based make-like utility."
+
+ if s.respond_to? :specification_version then
+ s.specification_version = 3
+
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
+ s.add_development_dependency(%q, ["~> 2.1"])
+ else
+ s.add_dependency(%q, ["~> 2.1"])
+ end
+ else
+ s.add_dependency(%q, ["~> 2.1"])
+ end
+end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/.specification b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/.specification
deleted file mode 100755
index ca8ae3d2251..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/.specification
+++ /dev/null
@@ -1,301 +0,0 @@
---- !ruby/object:Gem::Specification
-name: rack
-version: !ruby/object:Gem::Version
- prerelease: false
- segments:
- - 1
- - 0
- - 1
- version: 1.0.1
-platform: ruby
-authors:
- - Christian Neukirchen
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2009-10-18 00:00:00 +02:00
-default_executable: rackup
-dependencies:
- - !ruby/object:Gem::Dependency
- name: test-spec
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id001
- - !ruby/object:Gem::Dependency
- name: camping
- prerelease: false
- requirement: &id002 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id002
- - !ruby/object:Gem::Dependency
- name: fcgi
- prerelease: false
- requirement: &id003 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id003
- - !ruby/object:Gem::Dependency
- name: memcache-client
- prerelease: false
- requirement: &id004 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id004
- - !ruby/object:Gem::Dependency
- name: mongrel
- prerelease: false
- requirement: &id005 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id005
- - !ruby/object:Gem::Dependency
- name: ruby-openid
- prerelease: false
- requirement: &id006 !ruby/object:Gem::Requirement
- requirements:
- - - ~>
- - !ruby/object:Gem::Version
- segments:
- - 2
- - 0
- - 0
- version: 2.0.0
- type: :development
- version_requirements: *id006
- - !ruby/object:Gem::Dependency
- name: thin
- prerelease: false
- requirement: &id007 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id007
-description: Rack provides minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call. Also see http://rack.rubyforge.org.
-email: chneukirchen@gmail.com
-executables:
- - rackup
-extensions: []
-
-extra_rdoc_files:
- - README
- - SPEC
- - RDOX
- - KNOWN-ISSUES
-files:
- - COPYING
- - KNOWN-ISSUES
- - README
- - Rakefile
- - bin/rackup
- - contrib/rack_logo.svg
- - example/lobster.ru
- - example/protectedlobster.rb
- - example/protectedlobster.ru
- - lib/rack.rb
- - lib/rack/adapter/camping.rb
- - lib/rack/auth/abstract/handler.rb
- - lib/rack/auth/abstract/request.rb
- - lib/rack/auth/basic.rb
- - lib/rack/auth/digest/md5.rb
- - lib/rack/auth/digest/nonce.rb
- - lib/rack/auth/digest/params.rb
- - lib/rack/auth/digest/request.rb
- - lib/rack/auth/openid.rb
- - lib/rack/builder.rb
- - lib/rack/cascade.rb
- - lib/rack/chunked.rb
- - lib/rack/commonlogger.rb
- - lib/rack/conditionalget.rb
- - lib/rack/content_length.rb
- - lib/rack/content_type.rb
- - lib/rack/deflater.rb
- - lib/rack/directory.rb
- - lib/rack/file.rb
- - lib/rack/handler.rb
- - lib/rack/handler/cgi.rb
- - lib/rack/handler/evented_mongrel.rb
- - lib/rack/handler/fastcgi.rb
- - lib/rack/handler/lsws.rb
- - lib/rack/handler/mongrel.rb
- - lib/rack/handler/scgi.rb
- - lib/rack/handler/swiftiplied_mongrel.rb
- - lib/rack/handler/thin.rb
- - lib/rack/handler/webrick.rb
- - lib/rack/head.rb
- - lib/rack/lint.rb
- - lib/rack/lobster.rb
- - lib/rack/lock.rb
- - lib/rack/methodoverride.rb
- - lib/rack/mime.rb
- - lib/rack/mock.rb
- - lib/rack/recursive.rb
- - lib/rack/reloader.rb
- - lib/rack/request.rb
- - lib/rack/response.rb
- - lib/rack/rewindable_input.rb
- - lib/rack/session/abstract/id.rb
- - lib/rack/session/cookie.rb
- - lib/rack/session/memcache.rb
- - lib/rack/session/pool.rb
- - lib/rack/showexceptions.rb
- - lib/rack/showstatus.rb
- - lib/rack/static.rb
- - lib/rack/urlmap.rb
- - lib/rack/utils.rb
- - test/cgi/lighttpd.conf
- - test/cgi/test
- - test/cgi/test.fcgi
- - test/cgi/test.ru
- - test/multipart/binary
- - test/multipart/empty
- - test/multipart/ie
- - test/multipart/nested
- - test/multipart/none
- - test/multipart/semicolon
- - test/multipart/text
- - test/spec_rack_auth_basic.rb
- - test/spec_rack_auth_digest.rb
- - test/spec_rack_auth_openid.rb
- - test/spec_rack_builder.rb
- - test/spec_rack_camping.rb
- - test/spec_rack_cascade.rb
- - test/spec_rack_cgi.rb
- - test/spec_rack_chunked.rb
- - test/spec_rack_commonlogger.rb
- - test/spec_rack_conditionalget.rb
- - test/spec_rack_content_length.rb
- - test/spec_rack_content_type.rb
- - test/spec_rack_deflater.rb
- - test/spec_rack_directory.rb
- - test/spec_rack_fastcgi.rb
- - test/spec_rack_file.rb
- - test/spec_rack_handler.rb
- - test/spec_rack_head.rb
- - test/spec_rack_lint.rb
- - test/spec_rack_lobster.rb
- - test/spec_rack_lock.rb
- - test/spec_rack_methodoverride.rb
- - test/spec_rack_mock.rb
- - test/spec_rack_mongrel.rb
- - test/spec_rack_recursive.rb
- - test/spec_rack_request.rb
- - test/spec_rack_response.rb
- - test/spec_rack_rewindable_input.rb
- - test/spec_rack_session_cookie.rb
- - test/spec_rack_session_memcache.rb
- - test/spec_rack_session_pool.rb
- - test/spec_rack_showexceptions.rb
- - test/spec_rack_showstatus.rb
- - test/spec_rack_static.rb
- - test/spec_rack_thin.rb
- - test/spec_rack_urlmap.rb
- - test/spec_rack_utils.rb
- - test/spec_rack_webrick.rb
- - test/testrequest.rb
- - test/unregistered_handler/rack/handler/unregistered.rb
- - test/unregistered_handler/rack/handler/unregistered_long_one.rb
- - SPEC
- - RDOX
- - rack.gemspec
-has_rdoc: true
-homepage: http://rack.rubyforge.org
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
- - lib
-required_ruby_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: rack
-rubygems_version: 1.3.6
-signing_key:
-specification_version: 2
-summary: a modular Ruby webserver interface
-test_files:
- - test/spec_rack_auth_basic.rb
- - test/spec_rack_auth_digest.rb
- - test/spec_rack_auth_openid.rb
- - test/spec_rack_builder.rb
- - test/spec_rack_camping.rb
- - test/spec_rack_cascade.rb
- - test/spec_rack_cgi.rb
- - test/spec_rack_chunked.rb
- - test/spec_rack_commonlogger.rb
- - test/spec_rack_conditionalget.rb
- - test/spec_rack_content_length.rb
- - test/spec_rack_content_type.rb
- - test/spec_rack_deflater.rb
- - test/spec_rack_directory.rb
- - test/spec_rack_fastcgi.rb
- - test/spec_rack_file.rb
- - test/spec_rack_handler.rb
- - test/spec_rack_head.rb
- - test/spec_rack_lint.rb
- - test/spec_rack_lobster.rb
- - test/spec_rack_lock.rb
- - test/spec_rack_methodoverride.rb
- - test/spec_rack_mock.rb
- - test/spec_rack_mongrel.rb
- - test/spec_rack_recursive.rb
- - test/spec_rack_request.rb
- - test/spec_rack_response.rb
- - test/spec_rack_rewindable_input.rb
- - test/spec_rack_session_cookie.rb
- - test/spec_rack_session_memcache.rb
- - test/spec_rack_session_pool.rb
- - test/spec_rack_showexceptions.rb
- - test/spec_rack_showstatus.rb
- - test/spec_rack_static.rb
- - test/spec_rack_thin.rb
- - test/spec_rack_urlmap.rb
- - test/spec_rack_utils.rb
- - test/spec_rack_webrick.rb
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/RDOX b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/RDOX
deleted file mode 100755
index 8b95b0cb22d..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/RDOX
+++ /dev/null
@@ -1,428 +0,0 @@
-
-== Rack::Auth::Basic
-* should challenge correctly when no credentials are specified
-* should rechallenge if incorrect credentials are specified
-* should return application output if correct credentials are specified
-* should return 400 Bad Request if different auth scheme used
-* realm as optional constructor arg
-
-== Rack::Auth::Digest::MD5
-* should challenge when no credentials are specified
-* should return application output if correct credentials given
-* should return application output if correct credentials given (hashed passwords)
-* should rechallenge if incorrect username given
-* should rechallenge if incorrect password given
-* should rechallenge with stale parameter if nonce is stale
-* should return 400 Bad Request if incorrect qop given
-* should return 400 Bad Request if incorrect uri given
-* should return 400 Bad Request if different auth scheme used
-* should not require credentials for unprotected path
-* should challenge when no credentials are specified for protected path
-* should return application output if correct credentials given for protected path
-* should return application output if correct credentials given for POST
-* should return application output if correct credentials given for PUT (using method override of POST)
-* realm as optional constructor arg
-
-== Rack::Auth::OpenID
-* realm uri should be valid
-* should be able to check if a uri is within the realm (empty)
-* return_to should be valid
-* extensions should have required constants defined
-* extensions should have Request and Response defined and inherit from OpenID::Extension
-
-== Rack::Builder
-* chains apps by default
-* has implicit #to_app
-* supports blocks on use
-* has explicit #to_app
-* apps are initialized once
-
-== Rack::Adapter::Camping
-* works with GET
-* works with POST
-
-== Rack::Cascade
-* should dispatch onward on 404 by default
-* should dispatch onward on whatever is passed
-* should fail if empty
-* should append new app
-
-== Rack::Handler::CGI
-* startup (empty)
-* should respond
-* should be a lighttpd
-* should have rack headers
-* should have CGI headers on GET
-* should have CGI headers on POST
-* should support HTTP auth
-* should set status
-* shutdown
-
-== Rack::Chunked
-* chunks responses with no Content-Length
-* chunks empty bodies properly
-* does not modify response when Content-Length header present
-* does not modify response when client is HTTP/1.0
-* does not modify response when Transfer-Encoding header already present
-* does not modify response when status code is 100
-* does not modify response when status code is 204
-* does not modify response when status code is 304
-
-== Rack::CommonLogger
-* should log to rack.errors by default
-* should log to anything with <<
-
-== Rack::ConditionalGet
-* should set a 304 status and truncate body when If-Modified-Since hits
-* should set a 304 status and truncate body when If-None-Match hits
-* should not affect non-GET/HEAD requests
-
-== Rack::ContentLength
-* sets Content-Length on String bodies if none is set
-* sets Content-Length on Array bodies if none is set
-* does not set Content-Length on variable length bodies
-* does not change Content-Length if it is already set
-* does not set Content-Length on 304 responses
-* does not set Content-Length when Transfer-Encoding is chunked
-
-== Rack::ContentType
-* sets Content-Type to default text/html if none is set
-* sets Content-Type to chosen default if none is set
-* does not change Content-Type if it is already set
-* case insensitive detection of Content-Type
-
-== Rack::Deflater
-* should be able to deflate bodies that respond to each
-* should be able to deflate String bodies
-* should be able to gzip bodies that respond to each
-* should be able to fallback to no deflation
-* should be able to skip when there is no response entity body
-* should handle the lack of an acceptable encoding
-* should handle gzip response with Last-Modified header
-* should do nothing when no-transform Cache-Control directive present
-
-== Rack::Directory
-* serves directory indices
-* passes to app if file found
-* serves uri with URL encoded filenames
-* does not allow directory traversal
-* 404s if it can't find the file
-
-== Rack::Handler::FastCGI
-* startup (empty)
-* should respond
-* should be a lighttpd
-* should have rack headers
-* should have CGI headers on GET
-* should have CGI headers on POST
-* should support HTTP auth
-* should set status
-* shutdown
-
-== Rack::File
-* serves files
-* sets Last-Modified header
-* serves files with URL encoded filenames
-* does not allow directory traversal
-* does not allow directory traversal with encoded periods
-* 404s if it can't find the file
-* detects SystemCallErrors
-* returns bodies that respond to #to_path
-
-== Rack::Handler
-* has registered default handlers
-* handler that doesn't exist should raise a NameError
-* should get unregistered, but already required, handler by name
-* should register custom handler
-* should not need registration for properly coded handlers even if not already required
-
-== Rack::Head
-* response (empty)
-* passes GET, POST, PUT, DELETE, OPTIONS, TRACE requests
-* removes body from HEAD requests
-
-== Rack::Lint
-* passes valid request
-* notices fatal errors
-* notices environment errors
-* notices input errors
-* notices error errors
-* notices status errors
-* notices header errors
-* notices content-type errors
-* notices content-length errors
-* notices body errors
-* notices input handling errors
-* notices error handling errors
-* notices HEAD errors
-* passes valid read calls
-
-== Rack::Lint::InputWrapper
-* delegates :size to underlying IO object
-* delegates :rewind to underlying IO object
-
-== Rack::Lobster::LambdaLobster
-* should be a single lambda
-* should look like a lobster
-* should be flippable
-
-== Rack::Lobster
-* should look like a lobster
-* should be flippable
-* should provide crashing for testing purposes
-
-== Rack::Lock
-* should call synchronize on lock
-* should set multithread flag to false
-* should reset original multithread flag when exiting lock
-
-== Rack::MethodOverride
-* should not affect GET requests
-* _method parameter should modify REQUEST_METHOD for POST requests
-* X-HTTP-Method-Override header should modify REQUEST_METHOD for POST requests
-* should not modify REQUEST_METHOD if the method is unknown
-* should not modify REQUEST_METHOD when _method is nil
-* should store the original REQUEST_METHOD prior to overriding
-
-== Rack::MockRequest
-* should return a MockResponse
-* should be able to only return the environment
-* should provide sensible defaults
-* should allow GET/POST/PUT/DELETE
-* should set content length
-* should allow posting
-* should use all parts of an URL
-* should behave valid according to the Rack spec
-
-== Rack::MockResponse
-* should provide access to the HTTP status
-* should provide access to the HTTP headers
-* should provide access to the HTTP body
-* should provide access to the Rack errors
-* should optionally make Rack errors fatal
-
-== Rack::Handler::Mongrel
-* should respond
-* should be a Mongrel
-* should have rack headers
-* should have CGI headers on GET
-* should have CGI headers on POST
-* should support HTTP auth
-* should set status
-* should provide a .run
-* should provide a .run that maps a hash
-* should provide a .run that maps a urlmap
-* should provide a .run that maps a urlmap restricting by host
-* should stream #each part of the response
-
-== Rack::Recursive
-* should allow for subrequests
-* should raise error on requests not below the app
-* should support forwarding
-
-== Rack::Request
-* wraps the rack variables
-* can figure out the correct host
-* can parse the query string
-* can parse POST data
-* can parse POST data with explicit content type
-* does not parse POST data when media type is not form-data
-* rewinds input after parsing POST data
-* cleans up Safari's ajax POST body
-* can get value by key from params with #[]
-* can set value to key on params with #[]=
-* values_at answers values by keys in order given
-* referrer should be extracted correct
-* can cache, but invalidates the cache
-* can figure out if called via XHR
-* can parse cookies
-* parses cookies according to RFC 2109
-* provides setters
-* provides the original env
-* can restore the URL
-* can restore the full path
-* can handle multiple media type parameters
-* can parse multipart form data
-* can parse big multipart form data
-* can detect invalid multipart form data
-* shouldn't try to interpret binary as utf8
-* should work around buggy 1.8.* Tempfile equality
-* does conform to the Rack spec
-* should parse Accept-Encoding correctly
-* should provide ip information
-* should allow subclass request to be instantiated after parent request
-* should allow parent request to be instantiated after subclass request
-
-== Rack::Response
-* has sensible default values
-* can be written to
-* can set and read headers
-* can set cookies
-* formats the Cookie expiration date accordingly to RFC 2109
-* can set secure cookies
-* can set http only cookies
-* can delete cookies
-* can do redirects
-* has a useful constructor
-* has a constructor that can take a block
-* doesn't return invalid responses
-* knows if it's empty
-* should provide access to the HTTP status
-* should provide access to the HTTP headers
-* does not add or change Content-Length when #finish()ing
-* updates Content-Length when body appended to using #write
-
-== Rack::RewindableInput
-=== given an IO object that is already rewindable
-* should be able to handle to read()
-* should be able to handle to read(nil)
-* should be able to handle to read(length)
-* should be able to handle to read(length, buffer)
-* should be able to handle to read(nil, buffer)
-* should rewind to the beginning when #rewind is called
-* should be able to handle gets
-* should be able to handle each
-* should not buffer into a Tempfile if no data has been read yet
-* should buffer into a Tempfile when data has been consumed for the first time
-* should close the underlying tempfile upon calling #close
-* should be possibel to call #close when no data has been buffered yet (empty)
-* should be possible to call #close multiple times (empty)
-=== given an IO object that is not rewindable
-* should be able to handle to read()
-* should be able to handle to read(nil)
-* should be able to handle to read(length)
-* should be able to handle to read(length, buffer)
-* should be able to handle to read(nil, buffer)
-* should rewind to the beginning when #rewind is called
-* should be able to handle gets
-* should be able to handle each
-* should not buffer into a Tempfile if no data has been read yet
-* should buffer into a Tempfile when data has been consumed for the first time
-* should close the underlying tempfile upon calling #close
-* should be possibel to call #close when no data has been buffered yet (empty)
-* should be possible to call #close multiple times (empty)
-=== given an IO object whose rewind method raises Errno::ESPIPE
-* should be able to handle to read()
-* should be able to handle to read(nil)
-* should be able to handle to read(length)
-* should be able to handle to read(length, buffer)
-* should be able to handle to read(nil, buffer)
-* should rewind to the beginning when #rewind is called
-* should be able to handle gets
-* should be able to handle each
-* should not buffer into a Tempfile if no data has been read yet
-* should buffer into a Tempfile when data has been consumed for the first time
-* should close the underlying tempfile upon calling #close
-* should be possibel to call #close when no data has been buffered yet (empty)
-* should be possible to call #close multiple times (empty)
-
-== Rack::Session::Cookie
-* creates a new cookie
-* loads from a cookie
-* survives broken cookies
-* barks on too big cookies
-* creates a new cookie with integrity hash
-* loads from a cookie wih integrity hash
-* ignores tampered with session cookies
-
-== Rack::Session::Memcache
-* MemCache can connect to existing server (empty)
-* faults on no connection
-* creates a new cookie
-* determines session from a cookie
-* survives nonexistant cookies
-* maintains freshness
-* deletes cookies with :drop option
-* provides new session id with :renew option
-* omits cookie with :defer option
-* multithread: should cleanly merge sessions (empty)
-
-== Rack::Session::Pool
-* creates a new cookie
-* determines session from a cookie
-* survives nonexistant cookies
-* deletes cookies with :drop option
-* provides new session id with :renew option
-* omits cookie with :defer option
-* multithread: should merge sessions (empty)
-
-== Rack::ShowExceptions
-* catches exceptions
-
-== Rack::ShowStatus
-* should provide a default status message
-* should let the app provide additional information
-* should not replace existing messages
-* should pass on original headers
-* should replace existing messages if there is detail
-
-== Rack::Static
-* serves files
-* 404s if url root is known but it can't find the file
-* calls down the chain if url root is not known
-
-== Rack::Handler::Thin
-* should respond
-* should be a Thin
-* should have rack headers
-* should have CGI headers on GET
-* should have CGI headers on POST
-* should support HTTP auth
-* should set status
-
-== Rack::URLMap
-* dispatches paths correctly
-* dispatches hosts correctly
-* should be nestable
-* should route root apps correctly
-
-== Rack::Utils
-* should escape correctly
-* should escape correctly for multibyte characters
-* should unescape correctly
-* should parse query strings correctly
-* should parse nested query strings correctly
-* should build query strings correctly
-* should figure out which encodings are acceptable
-* should return the bytesize of String
-
-== Rack::Utils::HeaderHash
-* should retain header case
-* should check existence of keys case insensitively
-* should merge case-insensitively
-* should overwrite case insensitively and assume the new key's case
-* should be converted to real Hash
-* should convert Array values to Strings when converting to Hash
-* should be able to delete the given key case-sensitively
-* should be able to delete the given key case-insensitively
-* should return the deleted value when #delete is called on an existing key
-* should return nil when #delete is called on a non-existant key
-
-== Rack::Utils::Context
-* should set context correctly
-* should alter app on recontexting
-* should run different apps
-
-== Rack::Utils::Multipart
-* should return nil if content type is not multipart
-* should parse multipart upload with text file
-* should parse multipart upload with nested parameters
-* should parse multipart upload with binary file
-* should parse multipart upload with empty file
-* should parse multipart upload with filename with semicolons
-* should not include file params if no file was selected
-* should parse IE multipart upload and clean up filename
-* rewinds input after parsing upload
-
-== Rack::Handler::WEBrick
-* should respond
-* should be a WEBrick
-* should have rack headers
-* should have CGI headers on GET
-* should have CGI headers on POST
-* should support HTTP auth
-* should set status
-* should correctly set cookies
-* should provide a .run
-
-335 specifications, 13 empty (1196 requirements), 0 failures
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/Rakefile b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/Rakefile
deleted file mode 100755
index c88f7aff7e9..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/Rakefile
+++ /dev/null
@@ -1,164 +0,0 @@
-# Rakefile for Rack. -*-ruby-*-
-require 'rake/rdoctask'
-require 'rake/testtask'
-
-
-desc "Run all the tests"
-task :default => [:test]
-
-
-desc "Make an archive as .tar.gz"
-task :dist => [:chmod, :changelog, :rdoc, "SPEC", "rack.gemspec"] do
- FileUtils.touch("RDOX")
- sh "git archive --format=tar --prefix=#{release}/ HEAD^{tree} >#{release}.tar"
- sh "pax -waf #{release}.tar -s ':^:#{release}/:' RDOX SPEC ChangeLog doc rack.gemspec"
- sh "gzip -f -9 #{release}.tar"
-end
-
-desc "Make an official release"
-task :officialrelease do
- puts "Official build for #{release}..."
- sh "rm -rf stage"
- sh "git clone --shared . stage"
- sh "cd stage && rake officialrelease_really"
- sh "mv stage/#{release}.tar.gz stage/#{release}.gem ."
-end
-
-task :officialrelease_really => [:fulltest, "RDOX", "SPEC", :dist, :gem] do
- sh "sha1sum #{release}.tar.gz #{release}.gem"
-end
-
-
-def version
- abort "You need to pass VERSION=... to build packages." unless ENV["VERSION"]
- ENV["VERSION"]
-end
-
-def release
- "rack-#{version}"
-end
-
-def manifest
- `git ls-files`.split("\n")
-end
-
-
-desc "Make binaries executable"
-task :chmod do
- Dir["bin/*"].each { |binary| File.chmod(0775, binary) }
- Dir["test/cgi/test*"].each { |binary| File.chmod(0775, binary) }
-end
-
-desc "Generate a ChangeLog"
-task :changelog do
- File.open("ChangeLog", "w") { |out|
- `git log -z`.split("\0").map { |chunk|
- author = chunk[/Author: (.*)/, 1].strip
- date = chunk[/Date: (.*)/, 1].strip
- desc, detail = $'.strip.split("\n", 2)
- detail ||= ""
- detail = detail.gsub(/.*darcs-hash:.*/, '')
- detail.rstrip!
- out.puts "#{date} #{author}"
- out.puts " * #{desc.strip}"
- out.puts detail unless detail.empty?
- out.puts
- }
- }
-end
-
-
-desc "Generate RDox"
-task "RDOX" do
- sh "specrb -Ilib:test -a --rdox >RDOX"
-end
-
-desc "Generate Rack Specification"
-task "SPEC" do
- File.open("SPEC", "wb") { |file|
- IO.foreach("lib/rack/lint.rb") { |line|
- if line =~ /## (.*)/
- file.puts $1
- end
- }
- }
-end
-
-desc "Run all the fast tests"
-task :test do
- sh "specrb -Ilib:test -w #{ENV['TEST'] || '-a'} #{ENV['TESTOPTS'] || '-t "^(?!Rack::Handler|Rack::Adapter|Rack::Session::Memcache|Rack::Auth::OpenID)"'}"
-end
-
-desc "Run all the tests"
-task :fulltest => [:chmod] do
- sh "specrb -Ilib:test -w #{ENV['TEST'] || '-a'} #{ENV['TESTOPTS']}"
-end
-
-begin
- require 'rubygems'
-rescue LoadError
- # Too bad.
-else
- task "rack.gemspec" do
- spec = Gem::Specification.new do |s|
- s.name = "rack"
- s.version = version
- s.platform = Gem::Platform::RUBY
- s.summary = "a modular Ruby webserver interface"
-
- s.description = <<-EOF
-Rack provides minimal, modular and adaptable interface for developing
-web applications in Ruby. By wrapping HTTP requests and responses in
-the simplest way possible, it unifies and distills the API for web
-servers, web frameworks, and software in between (the so-called
-middleware) into a single method call.
-
-Also see http://rack.rubyforge.org.
- EOF
-
- s.files = manifest + %w(SPEC RDOX rack.gemspec)
- s.bindir = 'bin'
- s.executables << 'rackup'
- s.require_path = 'lib'
- s.has_rdoc = true
- s.extra_rdoc_files = ['README', 'SPEC', 'RDOX', 'KNOWN-ISSUES']
- s.test_files = Dir['test/{test,spec}_*.rb']
-
- s.author = 'Christian Neukirchen'
- s.email = 'chneukirchen@gmail.com'
- s.homepage = 'http://rack.rubyforge.org'
- s.rubyforge_project = 'rack'
-
- s.add_development_dependency 'test-spec'
-
- s.add_development_dependency 'camping'
- s.add_development_dependency 'fcgi'
- s.add_development_dependency 'memcache-client'
- s.add_development_dependency 'mongrel'
- s.add_development_dependency 'ruby-openid', '~> 2.0.0'
- s.add_development_dependency 'thin'
- end
-
- File.open("rack.gemspec", "w") { |f| f << spec.to_ruby }
- end
-
- task :gem => ["rack.gemspec", "SPEC"] do
- FileUtils.touch("RDOX")
- sh "gem build rack.gemspec"
- end
-end
-
-desc "Generate RDoc documentation"
-task :rdoc do
- sh(*%w{rdoc --line-numbers --main README
- --title 'Rack\ Documentation' --charset utf-8 -U -o doc} +
- %w{README KNOWN-ISSUES SPEC RDOX} +
- Dir["lib/**/*.rb"])
-end
-
-task :pushsite => [:rdoc] do
- sh "cd site && git gc"
- sh "rsync -avz doc/ chneukirchen@rack.rubyforge.org:/var/www/gforge-projects/rack/doc/"
- sh "rsync -avz site/ chneukirchen@rack.rubyforge.org:/var/www/gforge-projects/rack/"
- sh "cd site && git push"
-end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/bin/rackup b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/bin/rackup
deleted file mode 100755
index 8e4df15e82f..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/bin/rackup
+++ /dev/null
@@ -1,176 +0,0 @@
-#!/usr/bin/env ruby
-# -*- ruby -*-
-
-$LOAD_PATH.unshift File.expand_path("#{__FILE__}/../../lib")
-autoload :Rack, 'rack'
-
-require 'optparse'
-
-automatic = false
-server = nil
-env = "development"
-daemonize = false
-pid = nil
-options = {:Port => 9292, :Host => "0.0.0.0", :AccessLog => []}
-
-# Don't evaluate CGI ISINDEX parameters.
-# http://hoohoo.ncsa.uiuc.edu/cgi/cl.html
-ARGV.clear if ENV.include?("REQUEST_METHOD")
-
-opts = OptionParser.new("", 24, ' ') { |opts|
- opts.banner = "Usage: rackup [ruby options] [rack options] [rackup config]"
-
- opts.separator ""
- opts.separator "Ruby options:"
-
- lineno = 1
- opts.on("-e", "--eval LINE", "evaluate a LINE of code") { |line|
- eval line, TOPLEVEL_BINDING, "-e", lineno
- lineno += 1
- }
-
- opts.on("-d", "--debug", "set debugging flags (set $DEBUG to true)") {
- $DEBUG = true
- }
- opts.on("-w", "--warn", "turn warnings on for your script") {
- $-w = true
- }
-
- opts.on("-I", "--include PATH",
- "specify $LOAD_PATH (may be used more than once)") { |path|
- $LOAD_PATH.unshift(*path.split(":"))
- }
-
- opts.on("-r", "--require LIBRARY",
- "require the library, before executing your script") { |library|
- require library
- }
-
- opts.separator ""
- opts.separator "Rack options:"
- opts.on("-s", "--server SERVER", "serve using SERVER (webrick/mongrel)") { |s|
- server = s
- }
-
- opts.on("-o", "--host HOST", "listen on HOST (default: 0.0.0.0)") { |host|
- options[:Host] = host
- }
-
- opts.on("-p", "--port PORT", "use PORT (default: 9292)") { |port|
- options[:Port] = port
- }
-
- opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
- env = e
- }
-
- opts.on("-D", "--daemonize", "run daemonized in the background") { |d|
- daemonize = d ? true : false
- }
-
- opts.on("-P", "--pid FILE", "file to store PID (default: rack.pid)") { |f|
- pid = File.expand_path(f)
- }
-
- opts.separator ""
- opts.separator "Common options:"
-
- opts.on_tail("-h", "--help", "Show this message") do
- puts opts
- exit
- end
-
- opts.on_tail("--version", "Show version") do
- puts "Rack #{Rack.version}"
- exit
- end
-
- opts.parse! ARGV
-}
-
-require 'pp' if $DEBUG
-
-config = ARGV[0] || "config.ru"
-if !File.exist? config
- abort "configuration #{config} not found"
-end
-
-if config =~ /\.ru$/
- cfgfile = File.read(config)
- if cfgfile[/^#\\(.*)/]
- opts.parse! $1.split(/\s+/)
- end
- inner_app = eval "Rack::Builder.new {( " + cfgfile + "\n )}.to_app",
- nil, config
-else
- require config
- inner_app = Object.const_get(File.basename(config, '.rb').capitalize)
-end
-
-unless server = Rack::Handler.get(server)
- # Guess.
- if ENV.include?("PHP_FCGI_CHILDREN")
- server = Rack::Handler::FastCGI
-
- # We already speak FastCGI
- options.delete :File
- options.delete :Port
- elsif ENV.include?("REQUEST_METHOD")
- server = Rack::Handler::CGI
- else
- begin
- server = Rack::Handler::Mongrel
- rescue LoadError => e
- server = Rack::Handler::WEBrick
- end
- end
-end
-
-p server if $DEBUG
-
-case env
-when "development"
- app = Rack::Builder.new {
- use Rack::CommonLogger, $stderr unless server.name =~ /CGI/
- use Rack::ShowExceptions
- use Rack::Lint
- run inner_app
- }.to_app
-
-when "deployment"
- app = Rack::Builder.new {
- use Rack::CommonLogger, $stderr unless server.name =~ /CGI/
- run inner_app
- }.to_app
-
-when "none"
- app = inner_app
-
-end
-
-if $DEBUG
- pp app
- pp inner_app
-end
-
-if daemonize
- if RUBY_VERSION < "1.9"
- exit if fork
- Process.setsid
- exit if fork
- Dir.chdir "/"
- File.umask 0000
- STDIN.reopen "/dev/null"
- STDOUT.reopen "/dev/null", "a"
- STDERR.reopen "/dev/null", "a"
- else
- Process.daemon
- end
-
- if pid
- File.open(pid, 'w'){ |f| f.write("#{Process.pid}") }
- at_exit { File.delete(pid) if File.exist?(pid) }
- end
-end
-
-server.run app, options
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/openid.rb b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/openid.rb
deleted file mode 100755
index c5f6a5143e3..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/auth/openid.rb
+++ /dev/null
@@ -1,480 +0,0 @@
-# AUTHOR: blink ; blink#ruby-lang@irc.freenode.net
-
-gem 'ruby-openid', '~> 2' if defined? Gem
-require 'rack/request'
-require 'rack/utils'
-require 'rack/auth/abstract/handler'
-require 'uri'
-require 'openid' #gem
-require 'openid/extension' #gem
-require 'openid/store/memory' #gem
-
-module Rack
- class Request
- def openid_request
- @env['rack.auth.openid.request']
- end
-
- def openid_response
- @env['rack.auth.openid.response']
- end
- end
-
- module Auth
-
- # Rack::Auth::OpenID provides a simple method for setting up an OpenID
- # Consumer. It requires the ruby-openid library from janrain to operate,
- # as well as a rack method of session management.
- #
- # The ruby-openid home page is at http://openidenabled.com/ruby-openid/.
- #
- # The OpenID specifications can be found at
- # http://openid.net/specs/openid-authentication-1_1.html
- # and
- # http://openid.net/specs/openid-authentication-2_0.html. Documentation
- # for published OpenID extensions and related topics can be found at
- # http://openid.net/developers/specs/.
- #
- # It is recommended to read through the OpenID spec, as well as
- # ruby-openid's documentation, to understand what exactly goes on. However
- # a setup as simple as the presented examples is enough to provide
- # Consumer functionality.
- #
- # This library strongly intends to utilize the OpenID 2.0 features of the
- # ruby-openid library, which provides OpenID 1.0 compatiblity.
- #
- # NOTE: Due to the amount of data that this library stores in the
- # session, Rack::Session::Cookie may fault.
-
- class OpenID
-
- class NoSession < RuntimeError; end
- class BadExtension < RuntimeError; end
- # Required for ruby-openid
- ValidStatus = [:success, :setup_needed, :cancel, :failure]
-
- # = Arguments
- #
- # The first argument is the realm, identifying the site they are trusting
- # with their identity. This is required, also treated as the trust_root
- # in OpenID 1.x exchanges.
- #
- # The optional second argument is a hash of options.
- #
- # == Options
- #
- # :return_to defines the url to return to after the client
- # authenticates with the openid service provider. This url should point
- # to where Rack::Auth::OpenID is mounted. If :return_to is not
- # provided, return_to will be the current url which allows flexibility
- # with caveats.
- #
- # :session_key defines the key to the session hash in the env.
- # It defaults to 'rack.session'.
- #
- # :openid_param defines at what key in the request parameters to
- # find the identifier to resolve. As per the 2.0 spec, the default is
- # 'openid_identifier'.
- #
- # :store defined what OpenID Store to use for persistant
- # information. By default a Store::Memory will be used.
- #
- # :immediate as true will make initial requests to be of an
- # immediate type. This is false by default. See OpenID specification
- # documentation.
- #
- # :extensions should be a hash of openid extension
- # implementations. The key should be the extension main module, the value
- # should be an array of arguments for extension::Request.new.
- # The hash is iterated over and passed to #add_extension for processing.
- # Please see #add_extension for further documentation.
- #
- # == Examples
- #
- # simple_oid = OpenID.new('http://mysite.com/')
- #
- # return_oid = OpenID.new('http://mysite.com/', {
- # :return_to => 'http://mysite.com/openid'
- # })
- #
- # complex_oid = OpenID.new('http://mysite.com/',
- # :immediate => true,
- # :extensions => {
- # ::OpenID::SReg => [['email'],['nickname']]
- # }
- # )
- #
- # = Advanced
- #
- # Most of the functionality of this library is encapsulated such that
- # expansion and overriding functions isn't difficult nor tricky.
- # Alternately, to avoid opening up singleton objects or subclassing, a
- # wrapper rack middleware can be composed to act upon Auth::OpenID's
- # responses. See #check and #finish for locations of pertinent data.
- #
- # == Responses
- #
- # To change the responses that Auth::OpenID returns, override the methods
- # #redirect, #bad_request, #unauthorized, #access_denied, and
- # #foreign_server_failure.
- #
- # Additionally #confirm_post_params is used when the URI would exceed
- # length limits on a GET request when doing the initial verification
- # request.
- #
- # == Processing
- #
- # To change methods of processing completed transactions, override the
- # methods #success, #setup_needed, #cancel, and #failure. Please ensure
- # the returned object is a rack compatible response.
- #
- # The first argument is an OpenID::Response, the second is a
- # Rack::Request of the current request, the last is the hash used in
- # ruby-openid handling, which can be found manually at
- # env['rack.session'][:openid].
- #
- # This is useful if you wanted to expand the processing done, such as
- # setting up user accounts.
- #
- # oid_app = Rack::Auth::OpenID.new realm, :return_to => return_to
- # def oid_app.success oid, request, session
- # user = Models::User[oid.identity_url]
- # user ||= Models::User.create_from_openid oid
- # request['rack.session'][:user] = user.id
- # redirect MyApp.site_home
- # end
- #
- # site_map['/openid'] = oid_app
- # map = Rack::URLMap.new site_map
- # ...
-
- def initialize(realm, options={})
- realm = URI(realm)
- raise ArgumentError, "Invalid realm: #{realm}" \
- unless realm.absolute? \
- and realm.fragment.nil? \
- and realm.scheme =~ /^https?$/ \
- and realm.host =~ /^(\*\.)?#{URI::REGEXP::PATTERN::URIC_NO_SLASH}+/
- realm.path = '/' if realm.path.empty?
- @realm = realm.to_s
-
- if ruri = options[:return_to]
- ruri = URI(ruri)
- raise ArgumentError, "Invalid return_to: #{ruri}" \
- unless ruri.absolute? \
- and ruri.scheme =~ /^https?$/ \
- and ruri.fragment.nil?
- raise ArgumentError, "return_to #{ruri} not within realm #{realm}" \
- unless self.within_realm?(ruri)
- @return_to = ruri.to_s
- end
-
- @session_key = options[:session_key] || 'rack.session'
- @openid_param = options[:openid_param] || 'openid_identifier'
- @store = options[:store] || ::OpenID::Store::Memory.new
- @immediate = !!options[:immediate]
-
- @extensions = {}
- if extensions = options.delete(:extensions)
- extensions.each do |ext, args|
- add_extension ext, *args
- end
- end
-
- # Undocumented, semi-experimental
- @anonymous = !!options[:anonymous]
- end
-
- attr_reader :realm, :return_to, :session_key, :openid_param, :store,
- :immediate, :extensions
-
- # Sets up and uses session data at :openid within the session.
- # Errors in this setup will raise a NoSession exception.
- #
- # If the parameter 'openid.mode' is set, which implies a followup from
- # the openid server, processing is passed to #finish and the result is
- # returned. However, if there is no appropriate openid information in the
- # session, a 400 error is returned.
- #
- # If the parameter specified by options[:openid_param] is
- # present, processing is passed to #check and the result is returned.
- #
- # If neither of these conditions are met, #unauthorized is called.
-
- def call(env)
- env['rack.auth.openid'] = self
- env_session = env[@session_key]
- unless env_session and env_session.is_a?(Hash)
- raise NoSession, 'No compatible session'
- end
- # let us work in our own namespace...
- session = (env_session[:openid] ||= {})
- unless session and session.is_a?(Hash)
- raise NoSession, 'Incompatible openid session'
- end
-
- request = Rack::Request.new(env)
- consumer = ::OpenID::Consumer.new(session, @store)
-
- if mode = request.GET['openid.mode']
- if session.key?(:openid_param)
- finish(consumer, session, request)
- else
- bad_request
- end
- elsif request.GET[@openid_param]
- check(consumer, session, request)
- else
- unauthorized
- end
- end
-
- # As the first part of OpenID consumer action, #check retrieves the data
- # required for completion.
- #
- # If all parameters fit within the max length of a URI, a 303 redirect
- # will be returned. Otherwise #confirm_post_params will be called.
- #
- # Any messages from OpenID's request are logged to env['rack.errors']
- #
- # env['rack.auth.openid.request'] is the openid checkid request
- # instance.
- #
- # session[:openid_param] is set to the openid identifier
- # provided by the user.
- #
- # session[:return_to] is set to the return_to uri given to the
- # identity provider.
-
- def check(consumer, session, req)
- oid = consumer.begin(req.GET[@openid_param], @anonymous)
- req.env['rack.auth.openid.request'] = oid
- req.env['rack.errors'].puts(oid.message)
- p oid if $DEBUG
-
- ## Extension support
- extensions.each do |ext,args|
- oid.add_extension(ext::Request.new(*args))
- end
-
- session[:openid_param] = req.GET[openid_param]
- return_to_uri = return_to ? return_to : req.url
- session[:return_to] = return_to_uri
- immediate = session.key?(:setup_needed) ? false : immediate
-
- if oid.send_redirect?(realm, return_to_uri, immediate)
- uri = oid.redirect_url(realm, return_to_uri, immediate)
- redirect(uri)
- else
- confirm_post_params(oid, realm, return_to_uri, immediate)
- end
- rescue ::OpenID::DiscoveryFailure => e
- # thrown from inside OpenID::Consumer#begin by yadis stuff
- req.env['rack.errors'].puts([e.message, *e.backtrace]*"\n")
- return foreign_server_failure
- end
-
- # This is the final portion of authentication.
- # If successful, a redirect to the realm is be returned.
- # Data gathered from extensions are stored in session[:openid] with the
- # extension's namespace uri as the key.
- #
- # Any messages from OpenID's response are logged to env['rack.errors']
- #
- # env['rack.auth.openid.response'] will contain the openid
- # response.
-
- def finish(consumer, session, req)
- oid = consumer.complete(req.GET, req.url)
- req.env['rack.auth.openid.response'] = oid
- req.env['rack.errors'].puts(oid.message)
- p oid if $DEBUG
-
- raise unless ValidStatus.include?(oid.status)
- __send__(oid.status, oid, req, session)
- end
-
- # The first argument should be the main extension module.
- # The extension module should contain the constants:
- # * class Request, should have OpenID::Extension as an ancestor
- # * class Response, should have OpenID::Extension as an ancestor
- # * string NS_URI, which defining the namespace of the extension
- #
- # All trailing arguments will be passed to extension::Request.new in
- # #check.
- # The openid response will be passed to
- # extension::Response#from_success_response, #get_extension_args will be
- # called on the result to attain the gathered data.
- #
- # This method returns the key at which the response data will be found in
- # the session, which is the namespace uri by default.
-
- def add_extension(ext, *args)
- raise BadExtension unless valid_extension?(ext)
- extensions[ext] = args
- return ext::NS_URI
- end
-
- # Checks the validitity, in the context of usage, of a submitted
- # extension.
-
- def valid_extension?(ext)
- if not %w[NS_URI Request Response].all?{|c| ext.const_defined?(c) }
- raise ArgumentError, 'Extension is missing constants.'
- elsif not ext::Response.respond_to?(:from_success_response)
- raise ArgumentError, 'Response is missing required method.'
- end
- return true
- rescue
- return false
- end
-
- # Checks the provided uri to ensure it'd be considered within the realm.
- # is currently not compatible with wildcard realms.
-
- def within_realm? uri
- uri = URI.parse(uri.to_s)
- realm = URI.parse(self.realm)
- return false unless uri.absolute?
- return false unless uri.path[0, realm.path.size] == realm.path
- return false unless uri.host == realm.host or realm.host[/^\*\./]
- # for wildcard support, is awkward with URI limitations
- realm_match = Regexp.escape(realm.host).
- sub(/^\*\./,"^#{URI::REGEXP::PATTERN::URIC_NO_SLASH}+.")+'$'
- return false unless uri.host.match(realm_match)
- return true
- end
- alias_method :include?, :within_realm?
-
- protected
-
- ### These methods define some of the boilerplate responses.
-
- # Returns an html form page for posting to an Identity Provider if the
- # GET request would exceed the upper URI length limit.
-
- def confirm_post_params(oid, realm, return_to, immediate)
- Rack::Response.new.finish do |r|
- r.write 'Confirm...'
- r.write oid.form_markup(realm, return_to, immediate)
- r.write ''
- end
- end
-
- # Returns a 303 redirect with the destination of that provided by the
- # argument.
-
- def redirect(uri)
- [ 303, {'Content-Length'=>'0', 'Content-Type'=>'text/plain',
- 'Location' => uri},
- [] ]
- end
-
- # Returns an empty 400 response.
-
- def bad_request
- [ 400, {'Content-Type'=>'text/plain', 'Content-Length'=>'0'},
- [''] ]
- end
-
- # Returns a basic unauthorized 401 response.
-
- def unauthorized
- [ 401, {'Content-Type' => 'text/plain', 'Content-Length' => '13'},
- ['Unauthorized.'] ]
- end
-
- # Returns a basic access denied 403 response.
-
- def access_denied
- [ 403, {'Content-Type' => 'text/plain', 'Content-Length' => '14'},
- ['Access denied.'] ]
- end
-
- # Returns a 503 response to be used if communication with the remote
- # OpenID server fails.
-
- def foreign_server_failure
- [ 503, {'Content-Type'=>'text/plain', 'Content-Length' => '23'},
- ['Foreign server failure.'] ]
- end
-
- private
-
- ### These methods are called after a transaction is completed, depending
- # on its outcome. These should all return a rack compatible response.
- # You'd want to override these to provide additional functionality.
-
- # Called to complete processing on a successful transaction.
- # Within the openid session, :openid_identity and :openid_identifier are
- # set to the user friendly and the standard representation of the
- # validated identity. All other data in the openid session is cleared.
-
- def success(oid, request, session)
- session.clear
- session[:openid_identity] = oid.display_identifier
- session[:openid_identifier] = oid.identity_url
- extensions.keys.each do |ext|
- label = ext.name[/[^:]+$/].downcase
- response = ext::Response.from_success_response(oid)
- session[label] = response.data
- end
- redirect(realm)
- end
-
- # Called if the Identity Provider indicates further setup by the user is
- # required.
- # The identifier is retrived from the openid session at :openid_param.
- # And :setup_needed is set to true to prevent looping.
-
- def setup_needed(oid, request, session)
- identifier = session[:openid_param]
- session[:setup_needed] = true
- redirect req.script_name + '?' + openid_param + '=' + identifier
- end
-
- # Called if the user indicates they wish to cancel identification.
- # Data within openid session is cleared.
-
- def cancel(oid, request, session)
- session.clear
- access_denied
- end
-
- # Called if the Identity Provider indicates the user is unable to confirm
- # their identity. Data within the openid session is left alone, in case
- # of swarm auth attacks.
-
- def failure(oid, request, session)
- unauthorized
- end
- end
-
- # A class developed out of the request to use OpenID as an authentication
- # middleware. The request will be sent to the OpenID instance unless the
- # block evaluates to true. For example in rackup, you can use it as such:
- #
- # use Rack::Session::Pool
- # use Rack::Auth::OpenIDAuth, realm, openid_options do |env|
- # env['rack.session'][:authkey] == a_string
- # end
- # run RackApp
- #
- # Or simply:
- #
- # app = Rack::Auth::OpenIDAuth.new app, realm, openid_options, &auth
-
- class OpenIDAuth < Rack::Auth::AbstractHandler
- attr_reader :oid
- def initialize(app, realm, options={}, &auth)
- @oid = OpenID.new(realm, options)
- super(app, &auth)
- end
-
- def call(env)
- to = auth.call(env) ? @app : @oid
- to.call env
- end
- end
- end
-end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/commonlogger.rb b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/commonlogger.rb
deleted file mode 100755
index 5e68ac626dc..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/commonlogger.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-module Rack
- # Rack::CommonLogger forwards every request to an +app+ given, and
- # logs a line in the Apache common log format to the +logger+, or
- # rack.errors by default.
-
- class CommonLogger
- def initialize(app, logger=nil)
- @app = app
- @logger = logger
- end
-
- def call(env)
- dup._call(env)
- end
-
- def _call(env)
- @env = env
- @logger ||= self
- @time = Time.now
- @status, @header, @body = @app.call(env)
- [@status, @header, self]
- end
-
- def close
- @body.close if @body.respond_to? :close
- end
-
- # By default, log to rack.errors.
- def <<(str)
- @env["rack.errors"].write(str)
- @env["rack.errors"].flush
- end
-
- def each
- length = 0
- @body.each { |part|
- length += part.size
- yield part
- }
-
- @now = Time.now
-
- # Common Log Format: http://httpd.apache.org/docs/1.3/logs.html#common
- # lilith.local - - [07/Aug/2006 23:58:02] "GET / HTTP/1.1" 500 -
- # %{%s - %s [%s] "%s %s%s %s" %d %s\n} %
- @logger << %{%s - %s [%s] "%s %s%s %s" %d %s %0.4f\n} %
- [
- @env['HTTP_X_FORWARDED_FOR'] || @env["REMOTE_ADDR"] || "-",
- @env["REMOTE_USER"] || "-",
- @now.strftime("%d/%b/%Y %H:%M:%S"),
- @env["REQUEST_METHOD"],
- @env["PATH_INFO"],
- @env["QUERY_STRING"].empty? ? "" : "?"+@env["QUERY_STRING"],
- @env["HTTP_VERSION"],
- @status.to_s[0..3],
- (length.zero? ? "-" : length.to_s),
- @now - @time
- ]
- end
- end
-end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/memcache.rb b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/memcache.rb
deleted file mode 100755
index 4a65cbf35d3..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/lib/rack/session/memcache.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-# AUTHOR: blink ; blink#ruby-lang@irc.freenode.net
-
-require 'rack/session/abstract/id'
-require 'memcache'
-
-module Rack
- module Session
- # Rack::Session::Memcache provides simple cookie based session management.
- # Session data is stored in memcached. The corresponding session key is
- # maintained in the cookie.
- # You may treat Session::Memcache as you would Session::Pool with the
- # following caveats.
- #
- # * Setting :expire_after to 0 would note to the Memcache server to hang
- # onto the session data until it would drop it according to it's own
- # specifications. However, the cookie sent to the client would expire
- # immediately.
- #
- # Note that memcache does drop data before it may be listed to expire. For
- # a full description of behaviour, please see memcache's documentation.
-
- class Memcache < Abstract::ID
- attr_reader :mutex, :pool
- DEFAULT_OPTIONS = Abstract::ID::DEFAULT_OPTIONS.merge \
- :namespace => 'rack:session',
- :memcache_server => 'localhost:11211'
-
- def initialize(app, options={})
- super
-
- @mutex = Mutex.new
- @pool = MemCache.
- new @default_options[:memcache_server], @default_options
- raise 'No memcache servers' unless @pool.servers.any?{|s|s.alive?}
- end
-
- def generate_sid
- loop do
- sid = super
- break sid unless @pool.get(sid, true)
- end
- end
-
- def get_session(env, sid)
- session = @pool.get(sid) if sid
- @mutex.lock if env['rack.multithread']
- unless sid and session
- env['rack.errors'].puts("Session '#{sid.inspect}' not found, initializing...") if $VERBOSE and not sid.nil?
- session = {}
- sid = generate_sid
- ret = @pool.add sid, session
- raise "Session collision on '#{sid.inspect}'" unless /^STORED/ =~ ret
- end
- session.instance_variable_set('@old', {}.merge(session))
- return [sid, session]
- rescue MemCache::MemCacheError, Errno::ECONNREFUSED # MemCache server cannot be contacted
- warn "#{self} is unable to find server."
- warn $!.inspect
- return [ nil, {} ]
- ensure
- @mutex.unlock if env['rack.multithread']
- end
-
- def set_session(env, session_id, new_session, options)
- expiry = options[:expire_after]
- expiry = expiry.nil? ? 0 : expiry + 1
-
- @mutex.lock if env['rack.multithread']
- session = @pool.get(session_id) || {}
- if options[:renew] or options[:drop]
- @pool.delete session_id
- return false if options[:drop]
- session_id = generate_sid
- @pool.add session_id, 0 # so we don't worry about cache miss on #set
- end
- old_session = new_session.instance_variable_get('@old') || {}
- session = merge_sessions session_id, old_session, new_session, session
- @pool.set session_id, session, expiry
- return session_id
- rescue MemCache::MemCacheError, Errno::ECONNREFUSED # MemCache server cannot be contacted
- warn "#{self} is unable to find server."
- warn $!.inspect
- return false
- ensure
- @mutex.unlock if env['rack.multithread']
- end
-
- private
-
- def merge_sessions sid, old, new, cur=nil
- cur ||= {}
- unless Hash === old and Hash === new
- warn 'Bad old or new sessions provided.'
- return cur
- end
-
- delete = old.keys - new.keys
- warn "//@#{sid}: delete #{delete*','}" if $VERBOSE and not delete.empty?
- delete.each{|k| cur.delete k }
-
- update = new.keys.select{|k| new[k] != old[k] }
- warn "//@#{sid}: update #{update*','}" if $VERBOSE and not update.empty?
- update.each{|k| cur[k] = new[k] }
-
- cur
- end
- end
- end
-end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/rack.gemspec b/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/rack.gemspec
deleted file mode 100755
index 2640997b27f..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/gems/rack-1.0.1/rack.gemspec
+++ /dev/null
@@ -1,54 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
- s.name = %q{rack}
- s.version = "1.0.1"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
- s.authors = ["Christian Neukirchen"]
- s.date = %q{2009-10-18}
- s.default_executable = %q{rackup}
- s.description = %q{Rack provides minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call. Also see http://rack.rubyforge.org.}
- s.email = %q{chneukirchen@gmail.com}
- s.executables = ["rackup"]
- s.extra_rdoc_files = ["README", "SPEC", "RDOX", "KNOWN-ISSUES"]
- s.files = ["COPYING", "KNOWN-ISSUES", "README", "Rakefile", "bin/rackup", "contrib/rack_logo.svg", "example/lobster.ru", "example/protectedlobster.rb", "example/protectedlobster.ru", "lib/rack.rb", "lib/rack/adapter/camping.rb", "lib/rack/auth/abstract/handler.rb", "lib/rack/auth/abstract/request.rb", "lib/rack/auth/basic.rb", "lib/rack/auth/digest/md5.rb", "lib/rack/auth/digest/nonce.rb", "lib/rack/auth/digest/params.rb", "lib/rack/auth/digest/request.rb", "lib/rack/auth/openid.rb", "lib/rack/builder.rb", "lib/rack/cascade.rb", "lib/rack/chunked.rb", "lib/rack/commonlogger.rb", "lib/rack/conditionalget.rb", "lib/rack/content_length.rb", "lib/rack/content_type.rb", "lib/rack/deflater.rb", "lib/rack/directory.rb", "lib/rack/file.rb", "lib/rack/handler.rb", "lib/rack/handler/cgi.rb", "lib/rack/handler/evented_mongrel.rb", "lib/rack/handler/fastcgi.rb", "lib/rack/handler/lsws.rb", "lib/rack/handler/mongrel.rb", "lib/rack/handler/scgi.rb", "lib/rack/handler/swiftiplied_mongrel.rb", "lib/rack/handler/thin.rb", "lib/rack/handler/webrick.rb", "lib/rack/head.rb", "lib/rack/lint.rb", "lib/rack/lobster.rb", "lib/rack/lock.rb", "lib/rack/methodoverride.rb", "lib/rack/mime.rb", "lib/rack/mock.rb", "lib/rack/recursive.rb", "lib/rack/reloader.rb", "lib/rack/request.rb", "lib/rack/response.rb", "lib/rack/rewindable_input.rb", "lib/rack/session/abstract/id.rb", "lib/rack/session/cookie.rb", "lib/rack/session/memcache.rb", "lib/rack/session/pool.rb", "lib/rack/showexceptions.rb", "lib/rack/showstatus.rb", "lib/rack/static.rb", "lib/rack/urlmap.rb", "lib/rack/utils.rb", "test/cgi/lighttpd.conf", "test/cgi/test", "test/cgi/test.fcgi", "test/cgi/test.ru", "test/multipart/binary", "test/multipart/empty", "test/multipart/ie", "test/multipart/nested", "test/multipart/none", "test/multipart/semicolon", "test/multipart/text", "test/spec_rack_auth_basic.rb", "test/spec_rack_auth_digest.rb", "test/spec_rack_auth_openid.rb", "test/spec_rack_builder.rb", "test/spec_rack_camping.rb", "test/spec_rack_cascade.rb", "test/spec_rack_cgi.rb", "test/spec_rack_chunked.rb", "test/spec_rack_commonlogger.rb", "test/spec_rack_conditionalget.rb", "test/spec_rack_content_length.rb", "test/spec_rack_content_type.rb", "test/spec_rack_deflater.rb", "test/spec_rack_directory.rb", "test/spec_rack_fastcgi.rb", "test/spec_rack_file.rb", "test/spec_rack_handler.rb", "test/spec_rack_head.rb", "test/spec_rack_lint.rb", "test/spec_rack_lobster.rb", "test/spec_rack_lock.rb", "test/spec_rack_methodoverride.rb", "test/spec_rack_mock.rb", "test/spec_rack_mongrel.rb", "test/spec_rack_recursive.rb", "test/spec_rack_request.rb", "test/spec_rack_response.rb", "test/spec_rack_rewindable_input.rb", "test/spec_rack_session_cookie.rb", "test/spec_rack_session_memcache.rb", "test/spec_rack_session_pool.rb", "test/spec_rack_showexceptions.rb", "test/spec_rack_showstatus.rb", "test/spec_rack_static.rb", "test/spec_rack_thin.rb", "test/spec_rack_urlmap.rb", "test/spec_rack_utils.rb", "test/spec_rack_webrick.rb", "test/testrequest.rb", "test/unregistered_handler/rack/handler/unregistered.rb", "test/unregistered_handler/rack/handler/unregistered_long_one.rb", "SPEC", "RDOX", "rack.gemspec"]
- s.has_rdoc = true
- s.homepage = %q{http://rack.rubyforge.org}
- s.require_paths = ["lib"]
- s.rubyforge_project = %q{rack}
- s.rubygems_version = %q{1.3.1}
- s.summary = %q{a modular Ruby webserver interface}
- s.test_files = ["test/spec_rack_auth_basic.rb", "test/spec_rack_auth_digest.rb", "test/spec_rack_auth_openid.rb", "test/spec_rack_builder.rb", "test/spec_rack_camping.rb", "test/spec_rack_cascade.rb", "test/spec_rack_cgi.rb", "test/spec_rack_chunked.rb", "test/spec_rack_commonlogger.rb", "test/spec_rack_conditionalget.rb", "test/spec_rack_content_length.rb", "test/spec_rack_content_type.rb", "test/spec_rack_deflater.rb", "test/spec_rack_directory.rb", "test/spec_rack_fastcgi.rb", "test/spec_rack_file.rb", "test/spec_rack_handler.rb", "test/spec_rack_head.rb", "test/spec_rack_lint.rb", "test/spec_rack_lobster.rb", "test/spec_rack_lock.rb", "test/spec_rack_methodoverride.rb", "test/spec_rack_mock.rb", "test/spec_rack_mongrel.rb", "test/spec_rack_recursive.rb", "test/spec_rack_request.rb", "test/spec_rack_response.rb", "test/spec_rack_rewindable_input.rb", "test/spec_rack_session_cookie.rb", "test/spec_rack_session_memcache.rb", "test/spec_rack_session_pool.rb", "test/spec_rack_showexceptions.rb", "test/spec_rack_showstatus.rb", "test/spec_rack_static.rb", "test/spec_rack_thin.rb", "test/spec_rack_urlmap.rb", "test/spec_rack_utils.rb", "test/spec_rack_webrick.rb"]
-
- if s.respond_to? :specification_version then
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
- s.specification_version = 2
-
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
- s.add_development_dependency(%q, [">= 0"])
- s.add_development_dependency(%q, [">= 0"])
- s.add_development_dependency(%q, [">= 0"])
- s.add_development_dependency(%q, [">= 0"])
- s.add_development_dependency(%q, [">= 0"])
- s.add_development_dependency(%q, ["~> 2.0.0"])
- s.add_development_dependency(%q, [">= 0"])
- else
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, ["~> 2.0.0"])
- s.add_dependency(%q, [">= 0"])
- end
- else
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, [">= 0"])
- s.add_dependency(%q, ["~> 2.0.0"])
- s.add_dependency(%q, [">= 0"])
- end
-end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/RUNNING_UNIT_TESTS b/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/RUNNING_UNIT_TESTS
deleted file mode 100755
index 16b119878ad..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/RUNNING_UNIT_TESTS
+++ /dev/null
@@ -1,24 +0,0 @@
-== Running with Rake
-
-The easiest way to run the unit tests is through Rake. The default task runs
-the entire test suite for all classes. For more information, checkout the
-full array of rake tasks with "rake -T"
-
-Rake can be found at http://rake.rubyforge.org
-
-== Running by hand
-
-If you only want to run a single test suite, or don't want to bother with Rake,
-you can do so with something like:
-
- ruby controller/base_tests.rb
-
-== Dependency on ActiveRecord and database setup
-
-Test cases in the test/controller/active_record/ directory depend on having
-activerecord and sqlite installed. If ActiveRecord is not in
-actionpack/../activerecord directory, or the sqlite rubygem is not installed,
-these tests are skipped.
-
-Other tests are runnable from a fresh copy of actionpack without any configuration.
-
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/cookies.rb b/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/cookies.rb
deleted file mode 100755
index c328db8bebb..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/cookies.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-module ActionController #:nodoc:
- # Cookies are read and written through ActionController#cookies.
- #
- # The cookies being read are the ones received along with the request, the cookies
- # being written will be sent out with the response. Reading a cookie does not get
- # the cookie object itself back, just the value it holds.
- #
- # Examples for writing:
- #
- # # Sets a simple session cookie.
- # cookies[:user_name] = "david"
- #
- # # Sets a cookie that expires in 1 hour.
- # cookies[:login] = { :value => "XJ-122", :expires => 1.hour.from_now }
- #
- # Examples for reading:
- #
- # cookies[:user_name] # => "david"
- # cookies.size # => 2
- #
- # Example for deleting:
- #
- # cookies.delete :user_name
- #
- # Please note that if you specify a :domain when setting a cookie, you must also specify the domain when deleting the cookie:
- #
- # cookies[:key] = {
- # :value => 'a yummy cookie',
- # :expires => 1.year.from_now,
- # :domain => 'domain.com'
- # }
- #
- # cookies.delete(:key, :domain => 'domain.com')
- #
- # The option symbols for setting cookies are:
- #
- # * :value - The cookie's value or list of values (as an array).
- # * :path - The path for which this cookie applies. Defaults to the root
- # of the application.
- # * :domain - The domain for which this cookie applies.
- # * :expires - The time at which this cookie expires, as a Time object.
- # * :secure - Whether this cookie is a only transmitted to HTTPS servers.
- # Default is +false+.
- # * :httponly - Whether this cookie is accessible via scripting or
- # only HTTP. Defaults to +false+.
- module Cookies
- def self.included(base)
- base.helper_method :cookies
- end
-
- protected
- # Returns the cookie container, which operates as described above.
- def cookies
- @cookies ||= CookieJar.new(self)
- end
- end
-
- class CookieJar < Hash #:nodoc:
- def initialize(controller)
- @controller, @cookies = controller, controller.request.cookies
- super()
- update(@cookies)
- end
-
- # Returns the value of the cookie by +name+, or +nil+ if no such cookie exists.
- def [](name)
- super(name.to_s)
- end
-
- # Sets the cookie named +name+. The second argument may be the very cookie
- # value, or a hash of options as documented above.
- def []=(key, options)
- if options.is_a?(Hash)
- options.symbolize_keys!
- else
- options = { :value => options }
- end
-
- options[:path] = "/" unless options.has_key?(:path)
- super(key.to_s, options[:value])
- @controller.response.set_cookie(key, options)
- end
-
- # Removes the cookie on the client machine by setting the value to an empty string
- # and setting its expiration date into the past. Like []=, you can pass in
- # an options hash to delete cookies with extra data such as a :path.
- def delete(key, options = {})
- options.symbolize_keys!
- options[:path] = "/" unless options.has_key?(:path)
- value = super(key.to_s)
- @controller.response.delete_cookie(key, options)
- value
- end
- end
-end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/session/abstract_store.rb b/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/session/abstract_store.rb
deleted file mode 100755
index f6369abf156..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/session/abstract_store.rb
+++ /dev/null
@@ -1,181 +0,0 @@
-require 'rack/utils'
-
-module ActionController
- module Session
- class AbstractStore
- ENV_SESSION_KEY = 'rack.session'.freeze
- ENV_SESSION_OPTIONS_KEY = 'rack.session.options'.freeze
-
- HTTP_COOKIE = 'HTTP_COOKIE'.freeze
- SET_COOKIE = 'Set-Cookie'.freeze
-
- class SessionHash < Hash
- def initialize(by, env)
- super()
- @by = by
- @env = env
- @loaded = false
- end
-
- def session_id
- ActiveSupport::Deprecation.warn(
- "ActionController::Session::AbstractStore::SessionHash#session_id " +
- "has been deprecated. Please use request.session_options[:id] instead.", caller)
- @env[ENV_SESSION_OPTIONS_KEY][:id]
- end
-
- def [](key)
- load! unless @loaded
- super
- end
-
- def []=(key, value)
- load! unless @loaded
- super
- end
-
- def to_hash
- h = {}.replace(self)
- h.delete_if { |k,v| v.nil? }
- h
- end
-
- def data
- ActiveSupport::Deprecation.warn(
- "ActionController::Session::AbstractStore::SessionHash#data " +
- "has been deprecated. Please use #to_hash instead.", caller)
- to_hash
- end
-
- def inspect
- load! unless @loaded
- super
- end
-
- private
- def loaded?
- @loaded
- end
-
- def load!
- stale_session_check! do
- id, session = @by.send(:load_session, @env)
- (@env[ENV_SESSION_OPTIONS_KEY] ||= {})[:id] = id
- replace(session)
- @loaded = true
- end
- end
-
- def stale_session_check!
- yield
- rescue ArgumentError => argument_error
- if argument_error.message =~ %r{undefined class/module ([\w:]*\w)}
- begin
- # Note that the regexp does not allow $1 to end with a ':'
- $1.constantize
- rescue LoadError, NameError => const_error
- raise ActionController::SessionRestoreError, "Session contains objects whose class definition isn\\'t available.\nRemember to require the classes for all objects kept in the session.\n(Original exception: \#{const_error.message} [\#{const_error.class}])\n"
- end
-
- retry
- else
- raise
- end
- end
- end
-
- DEFAULT_OPTIONS = {
- :key => '_session_id',
- :path => '/',
- :domain => nil,
- :expire_after => nil,
- :secure => false,
- :httponly => true,
- :cookie_only => true
- }
-
- def initialize(app, options = {})
- # Process legacy CGI options
- options = options.symbolize_keys
- if options.has_key?(:session_path)
- options[:path] = options.delete(:session_path)
- end
- if options.has_key?(:session_key)
- options[:key] = options.delete(:session_key)
- end
- if options.has_key?(:session_http_only)
- options[:httponly] = options.delete(:session_http_only)
- end
-
- @app = app
- @default_options = DEFAULT_OPTIONS.merge(options)
- @key = @default_options[:key]
- @cookie_only = @default_options[:cookie_only]
- end
-
- def call(env)
- session = SessionHash.new(self, env)
-
- env[ENV_SESSION_KEY] = session
- env[ENV_SESSION_OPTIONS_KEY] = @default_options.dup
-
- response = @app.call(env)
-
- session_data = env[ENV_SESSION_KEY]
- options = env[ENV_SESSION_OPTIONS_KEY]
-
- if !session_data.is_a?(AbstractStore::SessionHash) || session_data.send(:loaded?) || options[:expire_after]
- session_data.send(:load!) if session_data.is_a?(AbstractStore::SessionHash) && !session_data.send(:loaded?)
-
- sid = options[:id] || generate_sid
-
- unless set_session(env, sid, session_data.to_hash)
- return response
- end
-
- cookie = Rack::Utils.escape(@key) + '=' + Rack::Utils.escape(sid)
- cookie << "; domain=#{options[:domain]}" if options[:domain]
- cookie << "; path=#{options[:path]}" if options[:path]
- if options[:expire_after]
- expiry = Time.now + options[:expire_after]
- cookie << "; expires=#{expiry.httpdate}"
- end
- cookie << "; Secure" if options[:secure]
- cookie << "; HttpOnly" if options[:httponly]
-
- headers = response[1]
- unless headers[SET_COOKIE].blank?
- headers[SET_COOKIE] << "\n#{cookie}"
- else
- headers[SET_COOKIE] = cookie
- end
- end
-
- response
- end
-
- private
- def generate_sid
- ActiveSupport::SecureRandom.hex(16)
- end
-
- def load_session(env)
- request = Rack::Request.new(env)
- sid = request.cookies[@key]
- unless @cookie_only
- sid ||= request.params[@key]
- end
- sid, session = get_session(env, sid)
- [sid, session]
- end
-
- def get_session(env, sid)
- raise '#get_session needs to be implemented.'
- end
-
- def set_session(env, sid, session_data)
- raise '#set_session needs to be implemented.'
- end
- end
- end
-end
diff --git a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb b/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb
deleted file mode 100755
index a8c1ef9a6e0..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb
+++ /dev/null
@@ -1,23 +0,0 @@
-<%
-traces = [
-["Application Trace", @exception.application_backtrace],
-["Framework Trace", @exception.framework_backtrace],
-["Full Trace", @exception.clean_backtrace]
-]
-names = traces.collect {|name, trace| name}
-%>
-