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:
parent
c1d77fa6d6
commit
84ebc8306b
1
Gemfile
1
Gemfile
|
@ -1,5 +1,4 @@
|
|||
source 'http://rubygems.org'
|
||||
|
||||
gem 'rails'
|
||||
gem 'yajl-ruby', :require => 'yajl'
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
Binary file not shown.
|
@ -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.
Reference in New Issue