commit 86b76a198ee5c024d5cde96c6e334f9f55122964 Author: Holger Hans Peter Freyther Date: Tue Mar 13 23:59:23 2012 +0100 New start for a sysmocom_dhl extension... diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..428eeb0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +\#* +*~ +.#* +.DS_Store +.idea +.project +tmp +nbproject +*.swp diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5800638 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Rails Dog LLC nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..9f90d10 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +SysmocomDhl +=========== + +Deal with German DHL and German Post. Try to automate the process of calculating +shipping costs, creating labels and hopefully tracking. +Introduction goes here. + + +Example +======= + +Example goes here. + + +Copyright (c) 2012 Holger Freyther, released under the New BSD License diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..6f30923 --- /dev/null +++ b/Rakefile @@ -0,0 +1,75 @@ +require 'rubygems' +require 'rake' +require 'rake/testtask' +require 'rake/packagetask' +require 'rake/gempackagetask' + +gemfile = File.expand_path('../spec/test_app/Gemfile', __FILE__) +if File.exists?(gemfile) && (%w(spec cucumber).include?(ARGV.first.to_s) || ARGV.size == 0) + require 'bundler' + ENV['BUNDLE_GEMFILE'] = gemfile + Bundler.setup + + require 'rspec' + require 'rspec/core/rake_task' + RSpec::Core::RakeTask.new + + require 'cucumber/rake/task' + Cucumber::Rake::Task.new do |t| + t.cucumber_opts = %w{--format progress} + end +end + +desc "Default Task" +task :default => [:spec, :cucumber ] + +spec = eval(File.read('sysmocom_dhl.gemspec')) + +Rake::GemPackageTask.new(spec) do |p| + p.gem_spec = spec +end + +desc "Release to gemcutter" +task :release => :package do + require 'rake/gemcutter' + Rake::Gemcutter::Tasks.new(spec).define + Rake::Task['gem:push'].invoke +end + +desc "Default Task" +task :default => [ :spec ] + +desc "Regenerates a rails 3 app for testing" +task :test_app do + require '../spree/lib/generators/spree/test_app_generator' + class SysmocomDhlTestAppGenerator < Spree::Generators::TestAppGenerator + + def install_gems + inside "test_app" do + run 'bundle exec rake spree_core:install' + run 'bundle exec rake sysmocom_dhl:install' + end + end + + def migrate_db + run_migrations + end + + protected + def full_path_for_local_gems + <<-gems +gem 'spree_core', :path => \'#{File.join(File.dirname(__FILE__), "../spree/", "core")}\' +gem 'sysmocom_dhl', :path => \'#{File.dirname(__FILE__)}\' + gems + end + + end + SysmocomDhlTestAppGenerator.start +end + +namespace :test_app do + desc 'Rebuild test and cucumber databases' + task :rebuild_dbs do + system("cd spec/test_app && bundle exec rake db:drop db:migrate RAILS_ENV=test && rake db:drop db:migrate RAILS_ENV=cucumber") + end +end diff --git a/Versionfile b/Versionfile new file mode 100644 index 0000000..69ef138 --- /dev/null +++ b/Versionfile @@ -0,0 +1,9 @@ +# This file is used to designate compatibilty with different versions of Spree +# Please see http://spreecommerce.com/documentation/extensions.html#versionfile for details + +# Examples +# +# "0.50.x" => { :branch => "master" } +# "0.40.x" => { :tag => "v1.0.0", :version => "1.0.0" } + + diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..1c3c3b6 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,3 @@ +Rails.application.routes.draw do + # Add your extension routes here +end diff --git a/db/migrate/20120203182838_add_dhl_coupon_table.rb b/db/migrate/20120203182838_add_dhl_coupon_table.rb new file mode 100644 index 0000000..5a6e54e --- /dev/null +++ b/db/migrate/20120203182838_add_dhl_coupon_table.rb @@ -0,0 +1,14 @@ +class AddDhlCouponTable < ActiveRecord::Migration + def self.up + create_table :sysmocom_dhl_coupons do |t| + t.timestamps + t.references :order + t.string :type + t.string :code + end + end + + def self.down + drop_table :sysmocom_dhl_coupons + end +end diff --git a/lib/sysmocom_dhl.rb b/lib/sysmocom_dhl.rb new file mode 100644 index 0000000..9483307 --- /dev/null +++ b/lib/sysmocom_dhl.rb @@ -0,0 +1,17 @@ +require 'spree_core' +require 'sysmocom_dhl_hooks' + +module SysmocomDhl + class Engine < Rails::Engine + + config.autoload_paths += %W(#{config.root}/lib) + + def self.activate + Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c| + Rails.env.production? ? require(c) : load(c) + end + end + + config.to_prepare &method(:activate).to_proc + end +end diff --git a/lib/sysmocom_dhl_hooks.rb b/lib/sysmocom_dhl_hooks.rb new file mode 100644 index 0000000..9cbd114 --- /dev/null +++ b/lib/sysmocom_dhl_hooks.rb @@ -0,0 +1,3 @@ +class SysmocomDhlHooks < Spree::ThemeSupport::HookListener + # custom hooks go here +end \ No newline at end of file diff --git a/lib/tasks/install.rake b/lib/tasks/install.rake new file mode 100644 index 0000000..b2d2e10 --- /dev/null +++ b/lib/tasks/install.rake @@ -0,0 +1,25 @@ +namespace :sysmocom_dhl do + desc "Copies all migrations and assets (NOTE: This will be obsolete with Rails 3.1)" + task :install do + Rake::Task['sysmocom_dhl:install:migrations'].invoke + Rake::Task['sysmocom_dhl:install:assets'].invoke + end + + namespace :install do + desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)" + task :migrations do + source = File.join(File.dirname(__FILE__), '..', '..', 'db') + destination = File.join(Rails.root, 'db') + Spree::FileUtilz.mirror_files(source, destination) + end + + desc "Copies all assets (NOTE: This will be obsolete with Rails 3.1)" + task :assets do + source = File.join(File.dirname(__FILE__), '..', '..', 'public') + destination = File.join(Rails.root, 'public') + puts "INFO: Mirroring assets from #{source} to #{destination}" + Spree::FileUtilz.mirror_files(source, destination) + end + end + +end \ No newline at end of file diff --git a/lib/tasks/sysmocom_dhl.rake b/lib/tasks/sysmocom_dhl.rake new file mode 100644 index 0000000..2c5c4e2 --- /dev/null +++ b/lib/tasks/sysmocom_dhl.rake @@ -0,0 +1 @@ +# add custom rake tasks here \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..032425a --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,30 @@ +# This file is copied to ~/spec when you run 'ruby script/generate rspec' +# from the project root directory. +ENV["RAILS_ENV"] ||= 'test' +require File.expand_path("../test_app/config/environment", __FILE__) +require 'rspec/rails' + +# Requires supporting files with custom matchers and macros, etc, +# in ./support/ and its subdirectories. +Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f} + +RSpec.configure do |config| + # == Mock Framework + # + # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: + # + # config.mock_with :mocha + # config.mock_with :flexmock + # config.mock_with :rr + config.mock_with :rspec + + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + #config.include Devise::TestHelpers, :type => :controller + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, comment the following line or assign false + # instead of true. + config.use_transactional_fixtures = true +end + +@configuration ||= AppConfiguration.find_or_create_by_name("Default configuration") diff --git a/sysmocom_dhl.gemspec b/sysmocom_dhl.gemspec new file mode 100644 index 0000000..d64d35b --- /dev/null +++ b/sysmocom_dhl.gemspec @@ -0,0 +1,20 @@ +Gem::Specification.new do |s| + s.platform = Gem::Platform::RUBY + s.name = 'sysmocom_dhl' + s.version = '0.60.1' + s.summary = 'sysmocom_dhl shipping helper' + s.description = 'Deal with shipping cost, zones, insurance' + s.required_ruby_version = '>= 1.8.7' + + # s.author = 'David Heinemeier Hansson' + # s.email = 'david@loudthinking.com' + # s.homepage = 'http://www.rubyonrails.org' + # s.rubyforge_project = 'actionmailer' + + s.files = `git ls-files`.split("\n") + s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.require_path = 'lib' + s.requirements << 'none' + + s.add_dependency('spree_core', '>= 0.60.1') +end