From 0fbceb7d49d8a3f9928b90a5777e32d2558e45f1 Mon Sep 17 00:00:00 2001 From: Alex MacCaw Date: Thu, 16 Jun 2011 06:30:03 -0400 Subject: [PATCH] emulate implementation from jquery-rails gem --- Gemfile | 11 +++++--- Gemfile.lock | 26 +++++++++++++++++++ Rakefile | 10 +++++++ .../spine/install/install_generator.rb | 18 +++++++++++++ lib/spine-rails.rb | 1 + lib/spine/rails.rb | 12 +++++++++ lib/spine/rails/railtie.rb | 16 ++++++++++++ lib/spine/rails/version.rb | 6 +++++ spine-rails.gemspec | 25 ++++++++++++++++++ .../assets/javascripts}/spine.ajax.js | 0 {src => vendor/assets/javascripts}/spine.js | 0 .../assets/javascripts}/spine.list.js | 0 .../assets/javascripts}/spine.local.js | 0 .../assets/javascripts}/spine.manager.js | 0 .../assets/javascripts}/spine.route.js | 0 .../assets/javascripts}/spine.route.shim.js | 0 .../assets/javascripts}/spine.tabs.js | 0 .../assets/javascripts}/spine.tmpl.js | 0 18 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 Gemfile.lock create mode 100644 Rakefile create mode 100644 lib/generators/spine/install/install_generator.rb create mode 100644 lib/spine-rails.rb create mode 100644 lib/spine/rails.rb create mode 100644 lib/spine/rails/railtie.rb create mode 100644 lib/spine/rails/version.rb create mode 100644 spine-rails.gemspec rename {src => vendor/assets/javascripts}/spine.ajax.js (100%) rename {src => vendor/assets/javascripts}/spine.js (100%) rename {src => vendor/assets/javascripts}/spine.list.js (100%) rename {src => vendor/assets/javascripts}/spine.local.js (100%) rename {src => vendor/assets/javascripts}/spine.manager.js (100%) rename {src => vendor/assets/javascripts}/spine.route.js (100%) rename {src => vendor/assets/javascripts}/spine.route.shim.js (100%) rename {src => vendor/assets/javascripts}/spine.tabs.js (100%) rename {src => vendor/assets/javascripts}/spine.tmpl.js (100%) diff --git a/Gemfile b/Gemfile index e32e523..fad99ce 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,9 @@ source 'http://rubygems.org' -gem 'sinatra', '~> 1.0' -gem 'shotgun', :group => :reloadable -gem 'thin', :group => :reloadable -gem 'json' +# Specify your gem's dependencies in jquery-rails.gemspec +gemspec +# Rails is already being pulled in through gemspec +# gem "rails", :git => "git://github.com/rails/rails.git" +gem "rack", :git => "git://github.com/rack/rack.git" +gem "sprockets", :git => "git://github.com/sstephenson/sprockets.git" +gem "i18n", "0.6.0beta1" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..d8572e9 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,26 @@ +GEM + remote: http://rubygems.org/ + specs: + daemons (1.1.3) + eventmachine (0.12.10) + json (1.5.2) + rack (1.3.0) + shotgun (0.9) + rack (>= 1.0) + sinatra (1.2.6) + rack (~> 1.1) + tilt (< 2.0, >= 1.2.2) + thin (1.2.11) + daemons (>= 1.0.9) + eventmachine (>= 0.12.6) + rack (>= 1.0.0) + tilt (1.3.2) + +PLATFORMS + ruby + +DEPENDENCIES + json + shotgun + sinatra (~> 1.0) + thin diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..0f0975b --- /dev/null +++ b/Rakefile @@ -0,0 +1,10 @@ +require 'bundler' +Bundler::GemHelper.install_tasks + +# require "spec/rake/spectask" +# desc "Run all examples" +# Spec::Rake::SpecTask.new(:spec) do |t| +# t.ruby_opts = ['-r test/unit'] +# t.spec_opts = %w[--color] +# end +task :default => :spec \ No newline at end of file diff --git a/lib/generators/spine/install/install_generator.rb b/lib/generators/spine/install/install_generator.rb new file mode 100644 index 0000000..fba87f3 --- /dev/null +++ b/lib/generators/spine/install/install_generator.rb @@ -0,0 +1,18 @@ +require 'rails' + +module Jquery + module Generators + class InstallGenerator < ::Rails::Generators::Base + + desc "This generator installs Spine #{Spine::Rails::SPINE_VERSION}" + + source_root File.expand_path('../../../../../vendor/assets/javascripts', __FILE__) + + def copy_spine + say_status("copying", "Spine (#{Spine::Rails::SPINE_VERSION})", :green) + copy_file "spine.js", "public/javascripts/spine.js" + copy_file "spine.min.js", "public/javascripts/spine.min.js" + end + end + end +end if ::Rails.version < "3.1" diff --git a/lib/spine-rails.rb b/lib/spine-rails.rb new file mode 100644 index 0000000..a0fcf9a --- /dev/null +++ b/lib/spine-rails.rb @@ -0,0 +1 @@ +require 'jquery/rails' \ No newline at end of file diff --git a/lib/spine/rails.rb b/lib/spine/rails.rb new file mode 100644 index 0000000..45ae879 --- /dev/null +++ b/lib/spine/rails.rb @@ -0,0 +1,12 @@ +module Jquery + module Rails + PROTOTYPE_JS = %w{prototype effects dragdrop controls} + + if ::Rails.version < "3.1" + require 'jquery/rails/railtie' + else + require 'jquery/rails/engine' + end + require 'jquery/rails/version' + end +end \ No newline at end of file diff --git a/lib/spine/rails/railtie.rb b/lib/spine/rails/railtie.rb new file mode 100644 index 0000000..c2f715f --- /dev/null +++ b/lib/spine/rails/railtie.rb @@ -0,0 +1,16 @@ +module Jquery + module Rails + class Railtie < ::Rails::Railtie + config.before_configuration do + if ::Rails.root.join("public/javascripts/spine.min.js").exist? + sp_defaults = %w(spine) + sp_defaults.map! {|a| a + ".min" } if ::Rails.env.production? + else + sp_defaults = ::Rails.env.production? ? %w(spine.min) : %w(spine) + end + + config.action_view.javascript_expansions[:defaults] |= sp_defaults + end + end + end +end diff --git a/lib/spine/rails/version.rb b/lib/spine/rails/version.rb new file mode 100644 index 0000000..57d66de --- /dev/null +++ b/lib/spine/rails/version.rb @@ -0,0 +1,6 @@ +module Jquery + module Rails + VERSION = "0.0.1" + SPINE_VERSION = "0.0.4" + end +end \ No newline at end of file diff --git a/spine-rails.gemspec b/spine-rails.gemspec new file mode 100644 index 0000000..8a810bc --- /dev/null +++ b/spine-rails.gemspec @@ -0,0 +1,25 @@ +# -*- encoding: utf-8 -*- +require File.expand_path('../lib/jquery/rails/version', __FILE__) + +Gem::Specification.new do |s| + s.name = "jquery-rails" + s.version = Jquery::Rails::VERSION + s.platform = Gem::Platform::RUBY + s.authors = ["André Arko"] + s.email = ["andre@arko.net"] + s.homepage = "http://rubygems.org/gems/jquery-rails" + s.summary = "Use jQuery with Rails 3" + s.description = "This gem provides jQuery and the jQuery-ujs driver for your Rails 3 application." + + s.required_rubygems_version = ">= 1.3.6" + s.rubyforge_project = "jquery-rails" + + s.add_dependency "railties", "~> 3.0" + s.add_dependency "thor", "~> 0.14" + s.add_development_dependency "bundler", "~> 1.0.0" + s.add_development_dependency "rails", "~> 3.0" + + s.files = `git ls-files`.split("\n") + s.executables = `git ls-files`.split("\n").select{|f| f =~ /^bin/} + s.require_path = 'lib' +end \ No newline at end of file diff --git a/src/spine.ajax.js b/vendor/assets/javascripts/spine.ajax.js similarity index 100% rename from src/spine.ajax.js rename to vendor/assets/javascripts/spine.ajax.js diff --git a/src/spine.js b/vendor/assets/javascripts/spine.js similarity index 100% rename from src/spine.js rename to vendor/assets/javascripts/spine.js diff --git a/src/spine.list.js b/vendor/assets/javascripts/spine.list.js similarity index 100% rename from src/spine.list.js rename to vendor/assets/javascripts/spine.list.js diff --git a/src/spine.local.js b/vendor/assets/javascripts/spine.local.js similarity index 100% rename from src/spine.local.js rename to vendor/assets/javascripts/spine.local.js diff --git a/src/spine.manager.js b/vendor/assets/javascripts/spine.manager.js similarity index 100% rename from src/spine.manager.js rename to vendor/assets/javascripts/spine.manager.js diff --git a/src/spine.route.js b/vendor/assets/javascripts/spine.route.js similarity index 100% rename from src/spine.route.js rename to vendor/assets/javascripts/spine.route.js diff --git a/src/spine.route.shim.js b/vendor/assets/javascripts/spine.route.shim.js similarity index 100% rename from src/spine.route.shim.js rename to vendor/assets/javascripts/spine.route.shim.js diff --git a/src/spine.tabs.js b/vendor/assets/javascripts/spine.tabs.js similarity index 100% rename from src/spine.tabs.js rename to vendor/assets/javascripts/spine.tabs.js diff --git a/src/spine.tmpl.js b/vendor/assets/javascripts/spine.tmpl.js similarity index 100% rename from src/spine.tmpl.js rename to vendor/assets/javascripts/spine.tmpl.js