My extension did not pass the review but I don't understand what I did wrong

the reviewer reported this
Please register only SketchupExtension instance per extension package.
Does anyone know what this means?

You are best discussing this direct with the reviewers.

However, a valid RBZ archive [which is actually a re-suffixed ZIP] must only contain a loader RB. named - let’s say “xxxxx.rb” - and a single folder of the same name - “xxxxx” - usually containing its various support files and subfolders as might be needed.

So any RBZ that does not have that minimum content, or which contains more files or folders will fail the initial vetting process !

Did it say:

OR:

Please register only one SketchupExtension instance per extension package.

IF the latter, then there should be only one call to

Sketchup.register_extension()

within the extension registration script (sometimes also called the “loader script”,) that goes in the main “Plugins” folder.

1 Like

It said the first but you are probably onto the right track with your advice on the second.
The reviewer report email was a no reply email. Is there anyway I can contact the reviewer? Also, my extension uses one extension to build another. Both must be loaded for the later extension to work. I’m wondering is there a standard form of loader scripts for that situation? The developer part of the Sketchup site only shows a script for the single extension situation.

Thank you TIG and thank you Dan for your help. As always both knowledgeable and clear.

This stage is likely done by an automatic checking algorithm.

We’ve asked, how to contact a review person, but not gotten an answer to this question, just “crickets chirping”.

I do not think they will allow this kind of dynamic programming. It is obvious that the automatic check is not letting it through.

There cannot be a standard for doing something non-standard. :wink:

FYI (for any reader,) the standard form is given in the API docs, and (more importantly) the Extension Warehouse standard:


If you can explain what (generally) you want to do, perhaps we can help find a workaround.

Why does loading an extension (1) prior to loading the extension (2) is non standard ? Some extensions have prerequisite and needs to load framework/ressources from separate exension to work like Fredo tools. Or is it something different here ?

The reviewer is completely anonymous and the review process doesn’t involve any way to contact them or send a reply to their feedback. I’ve had much problems with this, to the point where I’ve wondered if it’s worth submitting extensions to extension warehouse.

When using libraries there’s still just one extension (object) per extension (rbz archive).

1 Like

It’s simple enough to have one extension created in your RB loader.
That can specify a ‘runner’ script within the loader’s extension set up - this will be in your subfolder, that in turn can load [or require] as many other scripts as you wish - from within the subfolder, or even elsewhere if desired.
When your extension is disabled nothing gets loaded other than the loader RB itself.
When your extension is enabled then everything gets loaded etc.

TIG, Dan, tiliarou, eneroth3,
thank you for your extremely helpful contributions. I think TIG’s and Dan’s statement that there can be only one call to Sketchup.register_extension() is the answer which most likely is correct. I will try to rearrange things to suit that way of loading. Funnily enough the extensions work fine on my computer just the way they are with two calls to Sketchup.register_extension() in the loader file. But if the reviewer doesn’t like it then I’ll just change it and see how it goes. I’ll come back and let you all know!
All the best everyone.

You can do many things in a set of scripts that might not be acceptable to the EWH review…
Some of them might be minor infringements of good practice, some might be heinous crimes against good coding - but they might all still work for you without dire consequences…
But if you intend to release your wares onto the unsuspecting public you need to have a little more ‘care’…

1 Like

This CAN be done. But you simply use Ruby’s require call:

# within extension one code:
begin
  require "extension_two.rb"
rescue
  # handle case where the other extension is not yet installed
end

… later on in “extension one”:

if defined?(Author::ExtensionTwo)
  LibLoaded = true
  LIB = Author::ExtensionTwo
else
  LibLoaded = false
  LIB = nil
end

… or mixin a library module:

if defined?(Author::ExtensionTwo)
  LibLoaded = true
  include Author::ExtensionTwo::Library
else
  LibLoaded = false
end
1 Like

This topic was automatically closed after 91 days. New replies are no longer allowed.