APP zip package placed in lib now can be unzip into vendor

APP zip package placed in lib now can be unzip into vendor,however
server can not restart
This commit is contained in:
Matthew Fu 2011-11-16 15:21:31 +08:00
parent c1d77fa6d6
commit 84ebc8306b
82 changed files with 91 additions and 1 deletions

View File

@ -1,5 +1,4 @@
source 'http://rubygems.org'
gem 'rails'
gem 'yajl-ruby', :require => 'yajl'

View File

@ -17,6 +17,12 @@ class Admin::PurchasesController < ApplicationController
redirect_to admin_purchases_url
end
def install_app
unzip_app
redirect_to admin_purchases_url
end
protected
def download_purchase(purchase, url)
@ -77,6 +83,62 @@ class Admin::PurchasesController < ApplicationController
end
end
def unzip_app
zip_name = "NewBlog"
file = "#{Rails.root}/lib/NewBlog.zip"
destination = "#{Rails.root}/vendor/plugins"
Zip::ZipFile.open(file) do |zip_file|
# encrypted = {}
# ['encrypted_data', 'encrypted_key', 'encrypted_iv'].each do |e|
# encrypted.merge!(e => zip_file.read(e))
# end
# orig_file = decrypt_data(encrypted['encrypted_data'], encrypted['encrypted_key'], encrypted['encrypted_iv'])
orig_file = file
temp_file = Tempfile.new("temp_file_zip")
# debugger
temp_file.binmode
temp_file.write orig_file
temp_file.rewind
# Zip::ZipFile.open(temp_file) { |orig_zip|
app = AppModule.new.from_json(zip_file.read("#{zip_name}/#{zip_name}/#{zip_name}.json"))
zip_file.each { |f|
if (f.to_s=~/^#{zip_name}\/#{zip_name}\/*/)
# debugger
f_path=File.join(destination, f.name.gsub(/^#{zip_name}\//, ''))
FileUtils.mkdir_p(File.dirname(f_path))
zip_file.extract(f, f_path) unless File.exist?(f_path)
end
}
# unzip_file(file, "#{Rails.root}/vendor/plugins")
# Dir.mktmpdir('f_path') { |dir|
#
# build_file(orig_zip, zip_name, dir)
# build_file(orig_zip, zip_name, dir, design.default_css) if design.default_css
# build_file(orig_zip, zip_name, dir, design.reset_css) if design.reset_css
# ['themes', 'javascripts', 'images'].each do |type|
# design.send(type).each do |object|
# build_file(orig_zip, zip_name, dir, object, type)
# end
# end
# }
# temp_file.close
# temp_file.unlink
# # design.save
# }
end
end
def build_file(orig_zip, zip_name, dir, object, type = nil)
title = object.file_filename
temp = File.new(dir + '/' + title, 'w+')
@ -85,4 +147,8 @@ class Admin::PurchasesController < ApplicationController
object.to_save = true
end
def unzip_file (file, destination)
end
end

13
app/models/app_module.rb Normal file
View File

@ -0,0 +1,13 @@
class AppModule
include Mongoid::Document
include Mongoid::Timestamps
field :name_of_app
field :version
field :organization
field :author
field :intro
field :update_info
field :create_date
end

View File

@ -36,6 +36,9 @@ PrototypeR4::Application.routes.draw do
end
resources :page_parts
resources :purchases do
collection do
get 'install_app'
end
member do
get 'download'
end

BIN
lib/NewBlog.zip Normal file

Binary file not shown.

View File

@ -0,0 +1,9 @@
{
"name_of_app": "NewBlog",
"version": "0.1",
"organization": "Rulingcom",
"author": "RD dep",
"intro": "A simple blog……",
"update_info": "Some info",
"create_date": "11-11-2011"
}

Binary file not shown.