Ever since switching to Mac based RoR development, I occasionally see that Webrick dies after simply printing 'Illegal Instruction 4'.
OSX 10.7.2, 10.7.3 and now 10.7.4
ruby 1.9.2p290
rails 3.2.2, and various other version starting with 3.1
So far, it's been rather innocuous, I just hit the up arrow key, hit enter, and restart the server, and everything is fine.
I've noticed that immediately after adding a new file to the development environment will almost always cause this condition. But it has happened when I haven't recently added a new file. But it almost always happens immediately after some file change. Put another way, I don't think it's ever happened when I'm just testing stuff, it seems that some kind of filesystem change is required to trigger this.
Just now, it happened, but this time it seems to of wedged up Webrick in some way, and after restarting Webrick, it wouldn't respond, I had to reboot to clear the condition. So this is starting to look less innocuous, and more like a looming development productivity problem.
Any other Mac developers seeing this?
I encountered this problem after implementing a scope on one of my models
scope :list_only, lambda { show_on_list }
(where show_on_list is an instance method). After rewriting the method to
scope :list_only, where("SomeSQLHere")
(where I used SQL in SomeSQLHere) it worked fine. I realize this doesn't address what "Illegal Instruction 4" means, but maybe the problem stems from some bad scope?
Do you have similar problems using non-webrick app servers? I encourage developing with the same app server you deploy with, which in this case looks to be Passenger.
Related
I'm working on an app with a friend and I keep running into errors in my local environment but the app works online (using Heroku). I believe memcache is causing issues in my local environment. Here's what I've done so far:
Added the memcache add-on to my app in Heroku
Installed Homebrew on my machine
Installed memcache using Homebrew with brew install memcached
Then I've restarted my app and ran the memcache process with memcached -vv.
When I access the app it works fine. Then I'll create a record. This also works fine. Then on page reload - when the record is fetched from the cache, the entire app systematically fails. Below is the error I receive (although I'm not sure how much help it is)
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
The error(s) only point to code where memcache is used. A simple user action (i.e. buy a book from a company) triggers the error and once it occurs the entire app is broken (meaning any route leads to the same error). It seems as though its just not storing/fetching the item, which makes me think the app isn't hitting memcache at all...Is it possible I have to gem install something - even though this is working in the production environment and on another dev's machine?
I'm looking for any guidance with troubleshooting memcache. More specifically, has anyone ever run into issues with local vs. production environments in regards to memcache? Any suggestions? I've thought about removing memcache from the app on Heroku, then un-installing it on my computer and then redoing everything.
I know I'm being fairly vague here but I'm not exactly sure what code to post that would help.
Thank you for any help.
After much frustration I began retracing the steps I took to install and implement memcache on my local environment. It didn't make sense how it was working online and with my friend's environment but not mine. Eventually I ran bundle install and then restarted the app and ran a new memcached process and that fixed everything. I'm still a bit confused but I guess my Gemfile just wasn't updated (even though I could've sworn it was).
I use memached without any problems in my environmens, though I do not use Herouku. To access memcached, I have installed the Dalli gem from https://github.com/mperham/dalli
Using it is rather simple.
In the file environment.rb add:
DC = Dalli::Client.new('localhost:11211')
In the application I use
DC.get(key)
DC.delete(key)
DC.set(key,value)
You will first need to test if the keys you're setting are actually getting set or not. You can use Memcached via a Telnet interface to test this.
I have a Rails application that requires a bunch of environment stuff to get set up, and right now the easiest way for me to do it is to run a batch file to configure the environment and then launch the server from the command prompt. (Perhaps one day I will bite the bullet and transcribe all of the various environment variables into the project config, but I'd rather not...)
But when I do this, I occasionally manage to crash conhost.exe! It does not seem like I should be able to do this. Stranger still, it seems to happen most often if I access certain records in the application. I can't imagine it could crash if there were too much console output???
I am also having mscvrt-ruby.dll crashes, although I may have resolved those by doing some gem finagling. The conhost issue may or may not be related, I'm not sure. But if I launch the server from within RadRails, I don't seem to get these issues (the app doesn't completely work because of the missing environment stuff, but it seems much more stable).
Technicals: Windows 7, Rails 2.3.5, Ruby 1.93, Mongrel 1.2.0pre, uh, not sure what else...
Thoughts?
I'm brand new to ruby on rails and trying to run an application developed by others. I downloaded it from SVN it running yesterday, but today when I try to run it the first attempt to access the site's home page I get the message:
expected .../app/helpers/interface/table_helper.rb to define Interface::tableHelper.
.../lib/active_support/dependencies.rb:452:in 'load_missing_constant'
This file exists, and properly defines the tableHelper interface. Since I was able to run the program when I was setting it up yesterday, and others can run it without issue, I assume the problem I'm seeing is caused by an incorrectly set up environment rather then bad code somehow.
Can anyone suggest what I might try to figure out why rails can't seem to detect a properly defined interface?
If you were able to run the program once, perhaps something got screwed up? Have you made any changes to the code?
Alternatively, try stopping and restarting the server.
Also: what's the application? Maybe we can look at the codebase...
I'm getting a rails routing error for a brand new image I just added. The other images in the folder all work perfectly (/public/images/%f requested at /images/%f) yet this one produces a routing error. I've checked file permissions and it's not that.
Anybody know what might cause this? I'm using the development env so caching is off and I've verified it is!
Thanks,
Jay
Ok, rebooting my vagrant VM fixed it. Don't ask me why because I don't know and it doesn't make logistical sense, in the dev env everything should be reloaded on each request.
I did nothing else except boot the VM again after Zachary asked for some fail code and it was accessible as soon as rails loaded. I spoke to a colleague shortly thereafter and he too had a very similar issue where files were not accessible until after a reboot of the machine and similarly rebooting rails itself didn't do the same job for him either.
Sorry for wasting your time!
We are trying to update a Rails Server to release 5.1.
Server starts fine; but on the first request, goes completely dead; and has to be killed with signal 9.
Doesn't matter if its Puma or Webrick.
Doesn't matter if its 5.1.0 or 5.1.7
Doesn't matter if its development or production mode.
Eventually I saw the process size was 90GB and growing!
I've tried rbtrace, but struggled to get anything meaningful out of it.
I'm on osx, so strace isn't available, and I've struggled to get dtrace or dtruss to work, or produce anything meaningful.
So looking for a way to get this rails server to tell me what it's problem is....
Let me know what additional information is salient.
After quite a long process, I found a solution that didn't so much find the source of the issue, but provided a process to work around it.
First off, I used
rails app:update
And accepted all of the overwrites. Then using git, I walked through all of the removed code from my config file and returned just the required sections [like config/routes.rb, and ActionMailer config, for example].
Application then started right up, no issue.
This also led me to
http://railsdiff.org/5.0.7.2/5.1.0
Which is pretty critical for Rails upgrading. This is well worth consuming:
https://github.com/rails/rails/issues/31377#issuecomment-350422347