Ruby under Rubymine debugger variables constantly display "collecting data" - ruby

I am using Rubymine 5.4.3.2.1 with Ruby 1.9.3 under Windows 8. Debugging even the simplest programs is impossible because at the breakpoint variable display, drilling down on any complex variable ends up in an unending "collecting data" response. Debugging is useless.
I've been working with JetBrains for 2 days to solve this. They cannot recreate it. However, I have seen a number of posts where other users have had this problem and migrated to other debuggers. I'd rather stay on Rubymine if I can fix this. But, I need to use the debugger.
JetBrains has had me dump them varied information, disable the firewall, give them sample code, show them screencasts, reinstall gems and provide them a thread dump which they will look at next week. They asked me to try it on another workstation, which I don't have, and upgrade to Ruby 2.0, which wouldn't help since the code I'm using isn't compatible. I have searched (and searched and searched) for an answer. I have reinstalled Rubymine. All, to no avail.
Is anyone else seeing this problem? Has anyone else resolved this problem? Do you have any recommendations for me?
If someone else is seeing it, please report it to JetBrains.

Upgrading to current Ruby, such as 1.9.3p448, fixes this.
It turns out that BitNami has made a recent change in Rubystack that downgraded Ruby while applying the TCS (The Code Source) performance patches as of their Rubystack version 1.9.3-8. They provide inadequate notice or explanation of what they did or why. They did this only for Windows which makes no sense because that is a development environment. As of this date, Rubystack 1.9..3-12 is being distributed with this change that downgrades Ruby to 1.9.3p231.
BitNami Rubystack users that upgrade may see a rash of problems. If they choose to do so, they need to make sure they reference the TCS Ruby source code for builds. BitNami does have a recommendation regarding how to upgrade to current Rubyinstaller versions, which is a relief. You can see this at:
What Ruby source matches Rubystack 1.9.3-12?
My fix is going to be to download the RubyInstaller 7zip files and change the content of the BitNami Ruby folder for this other one as referenced here:
Is the Rubystack version outdated in release 1.9.3-12?

Related

How do I easily and cleanly update ruby 1.9 to the latest version on Windows Server 2008 r2

Full disclosure. I do not use Ruby. I never have even looked into learning it as a language.
We use ruby at our company to power an integration between a couple of our tools. Due to a TLS update we have to update our ruby version from 1.9.2 to the newest version.
On this windows server 2008 r2 machine I have that version of ruby and need to update. The problem is this tool is in constant use. So I cannot reasonably take the server down for a whole day while I try to figure out what to do. Initial research shows that these older versions of ruby are problematic to update.
I have only a half dozen gems to worry about (and found a really good guide on updating those - I think).
Looking for a kind soul who is willing to help a lost soul.
Is this a case of needing to completely uninstall and if so does that mean uninstall my gems as well? Or can I just run an update via cmd?
This is mostly going to come down to your gem dependencies.
As for just the language, the odds of encountering anything that works with Ruby 1.9.3, but not Ruby 2.0+ will be highly unlikely. Plenty of features have been added, but on a whole, backwards compatibility has been maintained.
This is not necessarily the case with gems, as the dependencies and robustness of the code can vary wildly depending on the source. The only real way to answer anything with confidence is to check/compare dependencies of each gem you require with your target Ruby version. Typically increasing the Ruby version is less likely to "break" anything than lowering it obviously, but it is still a significantly plausible scenario you must be wary of and prepare against.
The only real way to do this without downtime is to clone or setup a new environment for testing, install the newer Ruby, install the required gems you have researched dependencies, and test to make sure everything runs/works as expected.
Unfortunately there is no "magic bullet" here that is going to solve this issue for you. Luckily, the vast majority of this does not require knowledge of Ruby syntax and coding, and if everything goes well, will require nothing more than installing Ruby, installing gems, and comparing versions. If you run into issues with specific gems, I am confident that there is a host of people here on SO that can help guide you through reconciling it.

Xamarin Forms Universal Windows Platform app blocked by AppLocker

There is a question here about this already (though,short of re-installing Windows, which I'm obviously trying to avoid, the other solutions don't work for me), but I have some research to add, and a possible solution... which I don't understand, but perhaps someone here is able to shed light on how to implement it? I'm using Visual Studio 2015 Community on Windows 10 Pro x-64 with Anniversary Update (and latest cumulative update).
There is a possible work-around - details at https://social.technet.microsoft.com/Forums/windows/en-US/2f51398c-cef2-4686-9505-904d3f71ef6d/windows-10-applocker-packaged-app-white-list-blocks-store?forum=win10itprogeneral - where the resolution is to allow all Windows App Store apps, however no steps are given, so I don't know how to do that.
There is a relevant hot fix at https://support.microsoft.com/en-gb/kb/2719305, however that is targetting an older version of Windows, so I'm not sure of the repercussions of trying that. I'm leaving that as my last resort short of re-installing.
And finally, there is re-installing, as per the other thread on here, as the Anniversary Update is considered the suspect (and I'm past the rollback window). I already had the AU when I first tried UWP, so I never had it working to begin with to know if this is the culprit or not. I have never touched applocker myself (had never heard of it) - I have this problem out of the box.
Apart from the time involved, I don't want to re-install as there has been mixed success with it - for one person it fixed it, for another it fixed it initially but the problem came back. I am trying to get a permanent fix (and only re-install if I can't find one).
Anyone know a permanent fix for this? Or how to implement the first suggestion? Or implications of the second?
P.S. for the sake of completeness (and to pre-emptively answer this question), one of the things I already tried is the MS trouble-shooter for this issue (I think I found this one on MSDN from memory). It suggested using my MS login instead of my local user, and to change the temp environment variables back to default (I had them pointing to RAMdisk), but doing those things failed to fix the issue.
Well, I ended up re-installing Windows, having corrupted it along the way, and that ended up fixing the issue. I found along the way that the problem actually stops ALL apps from the store installing (I never did find out how to implement the store fix I mentioned in my question), and that provides a quick way to see if the problem is fixed (rather than trying to build/deploy your UWP app each time you think you've fixed it, just try installing a store app).
I did find something that MAY be a solution, at https://answers.microsoft.com/en-us/windows/forum/windows_8-winapps/this-app-wasnt-installed-error-0x80073cf9/92ec7c44-51ef-4c6a-9331-22958e01b4ec?page=1, which relates to how to recover from a corrupted user profile (I'm not being allowed to upload a snapshot of the relevant reply due to still being relatively new here. Sigh) - which I now believe to have been the cause - however I didn't get to try it out as I'd already corrupted Windows at that point. Note that none of the other solutions in that thread worked for me, so I would start with this one first, as the other solutions only worked for some people. If you have this problem then I would try that first before re-installing.
P.S. at one point it looked like the Anniversary Update may have caused the problem, however after I re-installed I tried before applying the AU, and then again with the AU, and it kept working afterwards,so that was NOT the culprit. It was the user profile/Windows being corrupt.

Does the Debian packaging system and RVM play well together?

Update
Forgive my ignorance, I think I asked him about rvm when I really meant RubyGems. And I think he's thinking of RubyGems because there does seem to be some controversy over it, at least there was in the past: http://stakeventures.com/articles/2008/12/04/rubygem-is-from-mars-aptget-is-from-venus. So please s/rvm/RubyGems/g for the below question.
End update
My server admin is a little wary of using rvm on Debian. Here's what he says:
Unfortunately, the whole rvm system doesn't interact properly with a
packaging system like Debian, and it's a nightmare to deploy when you
do the deployment at different times. [You can easily end up with
different versions of modules on different systems, etc, and you have
to deal with rvm stomping all over the Debian packaging system.]
I think what he's saying here is that we are going to be running the app across multiple servers and if we upgrade one server, it's going to cause serious problems for us.
Is there a way to address his concerns?
RVM in no way shape or form 'stomps' on the debian package system. RVM installs either in $HOME/.rvm for a general user, or in /usr/local/rvm using the 'rvm' group to which members must be added which is the normal place for 3rd party non-mission-critical applications, headers, and libraries.
RVM came into existence because of package managers. They were forever screwing up dependencies of rubies and gems, being behind the times for getting security updates pushed out immediately, for multiple rubies to be installed and managed on the same box without having to play symlink games to get them to work, and made deployments to multiple machines with multiple disparate deployment requirements a nightmare.
RVM solved all of that in a more than fairly seamless matter, with a specific eye on ensuring not only security of the install, and the users that use it, but also to ensuring that the package manager was in no way involved. This ensures that the package management tools and their databases of installed packages wouldn't get suddenly wacked.
I got involved as a user, and then as a developer on the RVM Project because it solved the dilemma so well and so elegantly.
Rubygems does not allows good control of gem versions, but together with bundler it allows a lot better control of version compared to apt-get.
You need to read on Bundler - it allows you to specify loose dependencies in Gemfile and strict ones are recorded in Gemfile.lock.
His concerns are that ruby is a moving target, ruby is updated every few months and all users should always update to latest patch level.
Ruby is a lot different packages (maybe except openssl), where ruby team is updating releases with patches, this allows focusing security efforts in one place, but this is against conservative approach of package managers where a version is picked and only security patches are applied to it, as stable it sounds - it spreads security effort on multiple teams and slows down whole open source community. Operating system maintainers do not want to accept the fact someone does part of the work for them and they could trust someone with it.
As for the repetitiveness of the process your admin is showing a lot of ignorance, RVM allows to lock versions, which is against the the Ruby approach explained above. So the simplest way to lock everything is to lock RVM to one version:
rvm install 1.15.14
But if the locking of RVM is required the preferred way is to lock it to minor version where compatibility is kept, but updates are provided:
rvm install latest-1.15
RVM does not keep this versions going for a very long time, but anytime there are concerns about current stable "stability" - we keep the previous version updated so you can decide which one to use.
#deryldoucette also explained a lot in his answer, I tried to not "reexplain" things.

Forcing two versions of software to be used together?

We have two different 'suites' of software: the windows-side software and the firmware. And, unfortunately, only certain versions of the windows-side software work with certain versions of the firmware.
For example, if a customer calls up with firmware version 10 we need an easy way for everyone (techs, developers, secretaries, etc) to know what this certain firmware works only with versions 12, 13, 14, and 15 of the windows software.
We have a wiki page just listing the versions and it worked fine, but there are enough 'hiccups' of people not following the process that we needs something a bit more forceful.
We have mercurial as a versioning system, but I can't see how this would be helpful for this problem (we are fine with forcing everyone to install hg).
Any ideas of programs / setups / anything that will help us alleviate the problem?
EDIT: So far most of the discussion is what I can do with the code from now on. I'm working on fixing that, too, but what can we do about all the previous releases where I can't go back and change any code? Thanks everyone for your help so far! Very appreciated!
To add to ChristopheD's comment, one way would be to make the software check the compatibility:
either through Internet (to download the latest updated list of compatible firmware and see if one of those version is present on the local computer)
or through a simple local text file if no WAN connection is available (which is easier to communicate and update than a full application release)
You might take a look at ClickOnce deployment. It allows more advanced configurations such as minimal versions. The deployment server might be on the internet or on the intranet.
I do think that you will have to change the implementation to solve this problem anyway. You cannot force an update (if you could that would be very virus-like)
I suddenly thought of this.
Think in the case of your software developed in .NET, and as well as the .NET framework (various versions). Maybe you want to follow that.
The client's host may be installed with firmware version 10 and 11; but your application requires firmware version 12. so your installer will download and install version 12.
However if your application requires firmware version 10, and the installed version is 12, maybe version 12 will also contain files from the previous versions (non-conflicting) and thus allowing the application (which requires version 10) to run from version 12.
I hate to answer my own question, but I wanted to mark something as the answer (it's ruining my perfect score!):
All that we did (and it ended up mostly fixing this problem) is rearranging the wiki so that if you wanted a windows version, you had to select which firmware you were using (and vice versa). I guess people ignore text enough, but forcing them to click on something was enough to get them to think.

Firefox: Plugin vs extension?

I'm unclear on the difference between the functioning of a plugin vs
an extension.
For years, I've written a plain old NPAPI plugin. It lived in /Library/
Plug-ins on mac and somewhere similar on a PC. With Firefox 3.6, it
stopped working. Looking around, I see this:
http://blog.mozilla.com/security/2009/11/16/component-directory-lockd...
which I figure might be the problem, so I try to turn my plugin into
an XPI, but this turns it into an extension.
I install it, and it STILL doesn't work, but now I don't know if it
doesn't work because extensions are a different beast than plugins,
and so what I did makes no sense at all, or whether it's because of
whatever the underlaying problem was before is still around, and so
what I did was a waste of time, and didn't actually address the
problem...
Can anyone give me some guidance here?
thanks.
The answer is "it's because of whatever the underlaying problem was before is still around". The lockdown post clearly states that you'll have problems only if you put your files inside Firefox.app/.../components (if you mentioned this link in your original post, you wouldn't have to try and make it into XPI).
The relationship between extensions and plugins is: an extension may include plugin(s), among other things. You can install plugins (without making them into an extension) in Firefox.
As for your original problem, unfortunately I have no idea why it doesn't work. I'm not well-versed with debugging NPAPI plugins and the only bit of information you shared is that it doesn't work in Firefox 3.6 :)
As a first step, does it appear in about:plugins or in Tools -> Addons?
You can install a plugin as part of an extension (optionally using an XPI) if you want.
The reason that your plugin stopped working in Firefox 3.6 is almost definitely that Firefox 3.6 stopped supporting the XPCOM method of providing a scripting interface. Most likely, your plugin loads but you can't talk to it in javascript.
For more information, look here: http://colonelpanic.net/2010/01/firefox-3-6-has-removed-support-for-xpcom-plugins/
Also, if you need to update it, you might consider using FireBreath, which extracts a lot of that complexity away from you.

Resources