New start for a sysmocom_dhl extension...

This commit is contained in:
Holger Hans Peter Freyther 2012-03-13 23:59:23 +01:00
commit 86b76a198e
13 changed files with 244 additions and 0 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
\#*
*~
.#*
.DS_Store
.idea
.project
tmp
nbproject
*.swp

23
LICENSE Normal file
View File

@ -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.

15
README.md Normal file
View File

@ -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

75
Rakefile Normal file
View File

@ -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

9
Versionfile Normal file
View File

@ -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" }

3
config/routes.rb Normal file
View File

@ -0,0 +1,3 @@
Rails.application.routes.draw do
# Add your extension routes here
end

View File

@ -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

17
lib/sysmocom_dhl.rb Normal file
View File

@ -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

View File

@ -0,0 +1,3 @@
class SysmocomDhlHooks < Spree::ThemeSupport::HookListener
# custom hooks go here
end

25
lib/tasks/install.rake Normal file
View File

@ -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

View File

@ -0,0 +1 @@
# add custom rake tasks here

30
spec/spec_helper.rb Normal file
View File

@ -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")

20
sysmocom_dhl.gemspec Normal file
View File

@ -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