[Plugin] SketchUcation Tools 2.6.1
-
@thomthom said:
@tig said:
I am unclear how a 'string' passed into the $: could be frozen when pushed into there ?
When adding objects to arrays you pass a reference - so the string could have been locked before pushed. That doesn't sound like something Ruby itself does, but it could be an extension that did it. For instance, it could create a constant to it's support folder - and then freeze it in order to protect its constant from inadvertent change. Then it could have pushed it to $; for convenience (all though that would be bad practice IMO).
In any case - when iterating or fetching values external to your own extension, be careful to use methods that modify the object. Make sure to copy it as Ruby as the objects you pass around will refer to the same memory. http://stackoverflow.com/a/10974116/486990
So if you iterate $: and use gsub you will be modifying the content of $: which might lead to unexpected result for the rest of the system.
It works on a clone of $:, so can I assume that the locked string still passes through that !
I can trap anyway for a gsub, so it's not critical...
EDIT:
After a little more delving I discovered some other potential pitfalls in $: paths containing \ versus / and 'cloning' of frozen strings etc...
The replacement RBS files in the attached ZIP should now avoid these ??
-
@tig said:
It works on a clone of $:, so can I assume that the locked string still passes through that !
How do you clone?
If you do call .clone then you clone the Array object itself - but it's a shallow clone. It doesn't clone all it's internal data.
<span class="syntaxdefault"><br />x </span><span class="syntaxkeyword">= [</span><span class="syntaxstring">"hello"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"world"</span><span class="syntaxkeyword">]<br />[</span><span class="syntaxstring">"hello"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"world"</span><span class="syntaxkeyword">]<br /><br /></span><span class="syntaxdefault">y </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">x</span><span class="syntaxkeyword">.clone<br />[</span><span class="syntaxstring">"hello"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"world"</span><span class="syntaxkeyword">]<br /><br /></span><span class="syntaxdefault">x</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">object_id<br />88135980<br /><br />y</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">object_id<br />90415700<br /><br />x</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each </span><span class="syntaxkeyword">{ |</span><span class="syntaxdefault">n</span><span class="syntaxkeyword">| </span><span class="syntaxdefault">puts n</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">object_id </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">88136040<br />88136000<br /></span><span class="syntaxkeyword">[</span><span class="syntaxstring">"hello"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"world"</span><span class="syntaxkeyword">]<br /><br /></span><span class="syntaxdefault">y</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each </span><span class="syntaxkeyword">{ |</span><span class="syntaxdefault">n</span><span class="syntaxkeyword">| </span><span class="syntaxdefault">puts n</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">object_id </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">88136040<br />88136000<br /></span><span class="syntaxkeyword">[</span><span class="syntaxstring">"hello"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"world"</span><span class="syntaxkeyword">]<br /> </span><span class="syntaxdefault"></span>
-
This article expand on the whole pass-reference-by-value nature of Ruby:
http://robertheaton.com/2014/07/22/is-ruby-pass-by-reference-or-pass-by-value/ -
Is this
array.clone
versusarray.dup
?
I have side-stepped that process now anyway, by making a new array and adding items to that... -
@tig said:
Is this
array.clone
versusarray.dup
?
I have side-stepped that process now anyway, by making a new array and adding items to that...Are you cloning the items you add?
-
In the format
item = (""+d.to_s)
where 'd
' is the element taken from the array... -
Reminder that
obj#clone()
copies the frozen state ofobj
, whilstobj#dup()
does not. -
Back on topic, the person's problems came from the fact that they changed the plugin folder's icon under Windows, which messes up permissions. I've never been able to (comfortably) fix the folder except by re-creating it, copying all it's contents over, and deleting the one the had the changed icon. (...yes even despite the "Repair" button,...)
-
Hi All,
dumb question maybe, how do I use the plugin store extension with a different profile/how do I change my profile? I want to log into a different account.
-
You can't use multiple accounts on a device.
-
So I'm rolling out a profile/bundle of plugins as a standard starting point for an office. I've created a Profile for the office that multiple people will be able to log into in order to get the "standard" package of plugins. If they already have a sketchucation plugin store profile is there no way to allow them to log in to the office profile? What if they re-install sketchup?
-
We have a corporate version that is a managed solution whereby it has its own master account and the remaining devices use its installs.
This prevents the users messing up with different bundles etc.
-
That makes sense, I don't have the same need for control here. I just want everyone to have the same starting point, it can evolve beyond that later. This doesn't help me with a solution if someone already has a profile, ie. "log out". Can you offer any suggestions there? Would re-installing sketchup work or no? I'm hesitant to do a test run and re-install anyone's sketchup before knowing what my options are and what may or may not even have an impact.
-
My memory is a woolly on the corporate/team version.
I do remember that the master users dictates the bundle to be used and anyone else logging in can only use that bundle.
I'd need to chat with Gabor about it.
But reinstalling SU is not needed.
-
there seems to be a glitch in the matrix, I'm still getting these banners for verson 2.5?...
-
looks like you need to reboot your matrix with CTRL+F5...
-
haha, might be, except the machine I'm on I bought in January 2015 (brand new, virgin), post 1 of this thread was done Sept. 2014.
I need to add that this does not happen all the time, only from time to time that I see the banner ad for 2.5
-
It's got nothing to do with when you bought machine. More so i only changed the ad artwork last week.
So your browser is serving you an older file...
-
Yep, but the browser can only serve me with what it is being directed to. If the machine had no access to this website / webpage / forum before the update, it cannot serve me with that information as it will have none of that in cache, not so? Or am I missing something?
The machine was brand new, not second hand. This has been showing up every now and again, not only now or over the last week or month.
-
Yes, and if your browser or our site settings are set to stored cached files then you will get those files until your browser settings are refreshed.
So what you are getting are cached images to improve page load times.
Even though the images have changed since your browser has not been told to update yet.
CTRL+F5 is a Hard refresh that forces the change in your browser.
Advertisement