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' source 'http://rubygems.org'
gem 'rails' gem 'rails'
gem 'yajl-ruby', :require => 'yajl' gem 'yajl-ruby', :require => 'yajl'

View File

@ -17,6 +17,12 @@ class Admin::PurchasesController < ApplicationController
redirect_to admin_purchases_url redirect_to admin_purchases_url
end end
def install_app
unzip_app
redirect_to admin_purchases_url
end
protected protected
def download_purchase(purchase, url) def download_purchase(purchase, url)
@ -77,6 +83,62 @@ class Admin::PurchasesController < ApplicationController
end end
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) def build_file(orig_zip, zip_name, dir, object, type = nil)
title = object.file_filename title = object.file_filename
temp = File.new(dir + '/' + title, 'w+') temp = File.new(dir + '/' + title, 'w+')
@ -85,4 +147,8 @@ class Admin::PurchasesController < ApplicationController
object.to_save = true object.to_save = true
end end
def unzip_file (file, destination)
end
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 end
resources :page_parts resources :page_parts
resources :purchases do resources :purchases do
collection do
get 'install_app'
end
member do member do
get 'download' get 'download'
end 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.