WEBrick: RequestURITooLarge: should I update or use a different server? - ruby-on-rails

I currently have:
$ rails s
=> Booting WEBrick
=> Rails 3.0.9 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-11-30 13:18:00] INFO WEBrick 1.3.1
[2011-11-30 13:18:00] INFO ruby 1.9.2 (2011-02-18) [x86_64-darwin10.8.0]
[2011-11-30 13:18:00] INFO WEBrick::HTTPServer#start: pid=4204 port=3000
The problem I'm having is I'm using openID for auth and getting the following error:
[2011-11-30 13:18:19] ERROR WEBrick::HTTPStatus::RequestURITooLarge
In the browser:
Request-URI Too Large
WEBrick::HTTPStatus::RequestURITooLarge
WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18) at macbook-pro.local:3000
How can I fix this? Can I update WEBrick or do I really need to use a different web server?
Thanks

In Ruby 1.9.3. source, it says that MAX_URI_LENGTH = 2083. That means that the latest version of Webrick can't handle urls longer that this. And that's what the WEBrick::HTTPStatus::RequestURITooLarge exception is telling you.
The solution therefore is to use a different web server. One of the most favourite ones is Thin:
sudo gem install thin
cd to/your/rails/app
thin -h
thin -a localhost start

Like said here, you could change the MAX_URI_LENGTH using this code:
WEBrick::HTTPRequest.const_set("MAX_URI_LENGTH", 10240)

I see you've tried unicorn: have you tried running it through bundler? Add:
gem :unicorn
to your Gemfile and run:
bundle exec unicorn_rails
to start the server and browse to http://localhost:8080.

Related

WEBrick doesn't make things appear in the web browser with Rails 4.2.0 version

I've been using Amazon EC2 for my development exercises.(I'm not that experienced and learning now by myself) Usually, I could do my tasks with ruby version 2.0.0 and rails 4.0.1 in Amazon linux EC2. My first tutorial instructed me to do exercises with those versions.(for ruby and rails) There was no problem when I ran rails server, which made WEBrick works and I could see my works on web browsers.
Few days ago I knew Ruby on Rails Tutorial, so I wanted to learn rails with Ruby on Rails Tutorial(by Michael Hartl). So I made another Amazon EC2 and accessed with putty and downloaded what I need. Here's what I have done.
#for rvm
gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable
#with rvm
source .bash_profile
rvm install ruby
#and for rails
gem install rails -v 4.2.0.rc3 --no-ri --no-rdoc
#then I made my sample_app
rails new sample_app --skip-bundle
#made 'therubyracer' works with deleting the "#" sign
#and with "sudo yum install sqlite-devel"(I don't know what this part means but server said I need it, so I just did)
then I ran my WEBrick with rails server
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2014-12-28 05:54:29] INFO WEBrick 1.3.1
[2014-12-28 05:54:29] INFO ruby 2.0.0 (2014-11-13) [x86_64-linux]
[2014-12-28 05:54:29] INFO WEBrick::HTTPServer#start: pid=25353 port=3000
this very Usual comments were coming out but I couldn't access my server with browser through my "IP:3000"(what I used for access with putty, so I don't think this IP is wrong) and Chrome browser was just saying that "This webpage is not available". Also my security group for new EC2 is exactly the same with the one I used for my other exercises before, so it is also not the reason for this error. I did those work many times with other AMIs that Amazon supports for free but I failed when I patched those high version rails(4.2.0).
Very bizarre because the terminal is saying the WEBrick is running but actually i can't access. Can you give me any help or advice for me to find out what's the problem? I'm so inexperienced and any help or comments will be a huge lesson to me and make me continue to learn. Thank you.
Rails 4.2 no longer listens on all interfaces by default: when running in the same machine you need to connect to
http://127.0.0.1:3000
(Localhost should work too).
However since it sounds like you are connecting to a remote server so you need to use the -b option to bind to extra ip addresses, eg
rails s -b 192.168.1.1
As Frederick notes, the -b option is now required, and you can typically use the public ip, and ensure you specify the port number you've opened in your security group.
rails s -b PUBLIC_IP_HERE -p 3000
Additionally, if you are using the Amazon's VPC, you should use the Private IP available in the EC2 console with "rails s -b", not the public IP.
Sure that your security group have a rule for TCP 3000.
Then, you can use the Public DNS:
rails server -b ec2-XX-XX-XX-XX.us-west-2.compute.amazonaws.com -p 3000
This works for me.
You need to bind rails to your AWS instances Private IP address in order to access the server remotely on the instance's public IP. You will find the Private IP within the AWS Instance dashboard Description tab.
e.g.>> rails s -b -p 3000

Why is my Aptana Terminal not configured with standard Terminal?

I want to use the Terminal built into Aptana Studio 3. I have everything configured on iTerm2/Terminal. I'm developing a Rails project. I do the following to get the server going.
On the Aptana Terminal:
$ rails s
Could not find pg-0.17.1 in any of the sources
Run `bundle install` to install missing gems.
On the regular Terminal or iTerm2:
~ rails s
=> Booting WEBrick
=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2014-08-12 16:15:17] INFO WEBrick 1.3.1
[2014-08-12 16:15:17] INFO ruby 2.0.0 (2013-11-22) [x86_64-darwin13.2.0]
[2014-08-12 16:15:17] INFO WEBrick::HTTPServer#start: pid=2612 port=3000
Both Terminals are on the same working directory. I could do bundle install on Aptana Terminal, but it is a chain of errors that occurs. I had that similar situation with iTerm2 and Terminal, but it was a very long and tedious process.
How can I properly configure the Aptana Terminal ?

Cant run rails app locally after adding SSL for production

I have recently added SSL for an Heroku hosted web app but now I cant run the app locally, the browser just spins forever and then in the terminal I get this error -
$ rails s
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2013-07-22 11:46:26] INFO WEBrick 1.3.1
[2013-07-22 11:46:26] INFO ruby 1.9.3 (2013-02-22) [x86_64-darwin12.4.0]
[2013-07-22 11:46:26] INFO WEBrick::HTTPServer#start: pid=34732 port=3000
[2013-07-22 11:51:07] ERROR bad Request-Line `:\x00\x00\x00'.
I don't nessessarily need SSL for development so don't need to add the thin gem or nugenix but how can I get it to run locally again?
Ryan Bates had a nice little episode on the topic of adding SSL which addresses the development environment. The configuration involves pow and nginx. I will be soon trying it out for myself but not this week.
Problem solved! By adding pow as the server I can run the app normally :)
To add POW to your app run this command curl get.pow.cx | sh and then cd ~/.pow followed by ln -s /path/to/myapp.
POW is well documented on the website http://pow.cx/ and as mentioned by another user Ryan Bates has a great video on SSL which explains how to add POW to your app -http://railscasts.com/episodes/357-adding-ssl

rails server stops when i try to use "rails s"

I'm trying to learn Ruby on Rails. When I build my app and try to run the server with rails s I get the following:
**radu#radu ~/rails_projects/first_app $ rails s
=> Booting WEBrick
=> Rails 3.2.6 application starting in development on http:// 0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-07-06 15:30:09] INFO WEBrick 1.3.1
[2012-07-06 15:30:09] INFO ruby 1.8.7 (2011-06-30) [i686-linux]
[2012-07-06 15:30:14] INFO WEBrick::HTTPServer#start: pid=8179 port=3000**
Then it stops for no apparent reason and T can't do anything except close it with ctrl+c.
What can I do to fix this?
rails s runs the web server that ships with rails. All that does is sit in the background as a process and listens for incoming web requests on port 3000 on localhost. Run it again and go to http://localhost:3000.
Are you expecting more of a console where you can interact with your application? If so, what you want is rails console which allows you to interact with your app. You can write and run code - really useful for trying out things on the fly before you commit them to code in your app.
Are you really expecting a magick in rails. Open the browser and open localhost:3000, come back here and check the logs. You need to hit the server in order to get the logs and this is how it works.

Rails - ctrl-c ignored after starting server

I have Ruby v1.9.3 and Rails v3.2.3 on Win7. I have no problem generating a Rails directory and starting the Ruby server, but what happens is that once the server is started I have no prompt and no code I type seems to execute.
to be specific - here is the terminal code from a session:
=> Booting WEBrick
=> Rails 3.2.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-04-30 06:25:06] INFO WEBrick 1.3.1
[2012-04-30 06:25:06] INFO ruby 1.9.3 (2012-02-16) [i386-mingw32]
[2012-04-30 06:25:06] INFO WEBrick::HTTPServer#start: pid=2112 port=3000
after this point there is no prompt and no command I type seems to produce a result (including ctrl-c).
what am I doing wrong?
This worked: Im doing a rails tutorial and this was the got me back on track. Ctrl-Pause/Break stopped the server.
I assume you're running rails server to get to this point.
Everything is working as it should. Rails is a web framework and when you run it in server mode it doesn't accept commands from the terminal. Instead Rails listens for web requests on port 3000 and responds appropriately. While the server is running the terminal window is displaying the internal server logs. Visit http://localhost:3000 while the server is running and you'll see what I mean.
If you want some command line interactivity, run rails console instead. This will load up your Rails environment but instead of listening for web requests on a port it'll give you an irb prompt where you can type ruby.
Ctrl-Pause/Break works. "Pause/Break" confused me for a little bit, so if you are new like me it is the key usually next to F12 that says "pause break". :)

Resources