Extension rbz maker
-
-
I only just tried it myself and I had to use
require('zip')
than that returns true...
I'll have a look at the plugins code to see what it uses
-
the plugin uses
require 'zip'
so that bit should work...the other thing I'd point out is you should not include the .skb files in your rbz...
john
-
@tntdavid said:
...
What now for all these files ?you don't need them,
do it from 'Ruby Console' in Sketchup, it's much easier...
then to test it's working typerequire("zip") #EDIT; had rubyzip
it should => true
then try this plugin again...
john -
1: open "Ruby Console"
2: paste in thisGem.install "rubyzip"
and enter...
3: if no errors paste in thisrequire("zip") #EDIT; had rubyzip
and enter...
4: if no errors, try this plugin...or report back...
-
thank you
require ('zip') worked well
I can now run Extension RBZ maker !
My plugin does not contain files Skb but SKP.
I noticed that the ruby script codes are protected but not the components used by my Plugin.
Is there a way to protect the SKP files ?
-
-
@tntdavid said:
I downloaded the file rubyzip2-2.0.2.gem
Do not use that. It is actually an older code fork than just plain rubyzip v1.1.6.
(Not sure why the author left it up on rubygems.org. It is a kind of beta version for Ruby higher than 1.8, but was abandoned. The original v1 code trunk was fixed to run in 1.9+ Ruby.)
-
@dan what's happening with
require 'rubyzip'
vrequire 'zip'
? -
@driven said:
@dan what's happening with
require 'rubyzip'
vrequire 'zip'
?The RubyGems extension modifies the global
require()
method so that it can load gems (and push their paths into$LOAD_PATH
,) and if need be, install them first from whatever gem servers are registered. (By default only rubygems.org is registered.)
So [important], this:require 'rubyzip'
, is actually saying "require the gem named 'rubyzip'", not "require the file named 'rubyzip.rb'".Once the gem library is installed and loaded, it can be used as it normally would, had it been a standard extension, in Ruby's library.
Hence, therequire("zip")
which actually makes sure that the
"#{ENV['GEM_PATH']}/gems/rubyzip-v1.1.6/lib/zip.rb"
file is loaded.
This works because the override of the globalrequire()
, by the RubyGems extension, has push the rubyzip lib into the$LOAD_PATH
array. Ie:
"#{ENV['GEM_PATH']}/gems/rubyzip-v1.1.6/lib/"
But I like to wrap in
begin
. ..rescue
, just in case. -
cheers dan,
another ?
in your example code wontrequire 'rubyzip'
always fail, even whenrequire 'zip'
returns true?john
-
@driven said:
in your example code wont
require 'rubyzip'
always fail, even whenrequire 'zip'
returns true?Hmmm.. OH I see.. even though, given the following:
Ref:@unknownuser said:
When RubyGems is required,
Kernel#require
is replaced with our own whichis capable of loading gems on demand.
When you call
require 'x'
, this is what happens:* If the file can be loaded from the existing Ruby loadpath, it is.
* Otherwise, installed gems are searched for a file that matches.
If it's found in gem 'y', that gem is activated (added to the
loadpath).
The normal
require
functionality of returningfalse
ifthat file has already been loaded is preserved.
Something I overlooked was, that in most gems, the gem "name" is the same as the gem loader script name.
But in this gem, the name is "rubyzip", but the loader script name is "zip.rb".
So what the overridden
require
does is, look for a loader script named "rubyzip.rb" and it will NEVER find it, so aLoadError
exception will be raised, always, even if the gem is already installed, and even if it is already loaded.And then my
rescue LoadError
clause will be fired.This doesn't hurt the first time, as if SketchUp is started normally and Rubygems is loaded and working.. the "rubyzip" gem will get installed and/or initialized by my
LoadError
clause.OK I need to change things a bit. I used to have a bail out "
return true if defined?(Zip)
" as the first line, removed it when I tried to load the "zip/filesystem" extension in the same methoid. I moved that to it's own method, so I'll put the short-circuit return line back in.Then I may need a different basic test other than
require("rubyzip")
.
I am not actually using the return value ofrequire("rubyzip")
to make any boolean decisions.
Perhaps justrequire("zip")
? -
@tntdavid said:
I want to blur my fichiers.rb to protect my work, so I downloaded the Plugin BGSketchup_RBZ_maker v1.0.1.rbz
RBZ-files are not intended to protect code. Any unzip program can be used the convert them back to the original files.
Only the scrambler will give limited protection. -
pgarmyn
I can assure you that RBZ maker convert my file "rb" in "rbs" !
Although the RBZ file can be decompressed the code is protected
driven
You're right for the skb! This is fixed now
-
I just noticed a very annoying problem !
RBZ maker produces non-compatible files rbs with Sketchup 8
I think many users are still under licenses "Sketchup 8" and wishes propose a PLUGIN which works for a maximum of users.Is there an alternative to produce rbs files ?
-
what's the error message on v8 say?
I'd be surprised if the .rbs is unusable, does it run as a .rb on the same machine?
have DC's been enabled on that machine?
john
-
Make sure your files are UTF-8 Encoded Without BOM.
-
There is no error message the launch of Sketchup !
Error 01: The toolbar will no longer display the images on the icons.
Error 02: The relationship between icons and components is lost.
-
are you still using
path_to_components = File.join(File.dirname(__FILE__), 'Components')
I'm unsure if that works from inside a rbs, I remember there was some problem with it...
-
Yes ! So how can I do otherwise ?
Advertisement