Why do I have to restart apache to properly refres

2019-03-06 05:19发布

问题:

I am trying to learn a bit of Ruby. I've installed Ruby on my Ubuntu machine and I am using apache. Everything works fine except to refresh a view I have to restart apache in the console and then hit ctrl-r, just pressing ctrl-r won't refresh the browser.

Apparently there's some caching going on, but does it have to be that way i.e. is it inherent to Ruby on Rails? I tried googling on this but it seems the only answer is to install some long-winded routine. For developing it seems like quite the tedious way to go.

回答1:

Apache's a perfectly good choice for development.

Just install Passenger (mod_rails)...and follow the instructions...

I set it up for each site so that /etc/hosts contains

127.0.0.1 myapp

I use Apache virtual hosts with an entry like so - in /etc/apache2/sites-available/myapp

<VirtualHost *:80>
  ServerName myapp
  DocumentRoot /path/to/myapp/public
  RailsEnv development
  RailsAllowModRewrite off
    <directory "/path/to/myapp/public">
      Order allow,deny
      Allow from all
    </directory>
</VirtualHost>

Enable and restart

sudo a2ensite myapp
sudo /etc/init.d/apache2 restart

That way, there's no running script/server ... it's just always running in dev mode - just point your browser to http://myapp



回答2:

Don't use apache for development mode. Use script/server and install the mongrel gem (sudo gem install mongrel). Mongrel is faster than WEBrick and dumps the development log to the console in which it runs. It makes development decent.



回答3:

Apache is not a good choice for development in cases like Rails, because you will indeed need to restart the server every time you change code. Rails ships with its own development server that you can start by executing (IIRC) script/server. It's much more suitable for development, as it needn't be restarted after every little change.



回答4:

I'm using Apache with Passenger (aka modrails) for development purposes, and it works fine here. Just make sure to use Rails in development mode by setting "RailsEnv development" in your httpd.conf.



回答5:

I use Apache with mod_fcgid. I found that going

$ touch ${MYAPP}/tmp/restart.txt

every time I want the app reloaded works for me.