Rails doesn't reload routes.rb in development

Hi,

I’m newbie in Rails. When I change routes.rb file Rails does not reload it, means /rails/info/routes shows same old routes and rake routes shows new. If I stop rails server and start again, it shows new routes. If I rename routes.rb files I get an exception routes.rb not found.

If I create new controller, change view and other files in app, I can see result in browser immediately, means rails reloads that code.

I’m using docker if it is important, Dockerfile:

FROM ruby:2.2.0

RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y mysql-client postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*

RUN bundle config --global frozen 1

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY Gemfile /usr/src/app/

COPY Gemfile.lock /usr/src/app/

RUN bundle install

EXPOSE 3000

CMD [“rails”, “server”, “-b”, “0.0.0.0”]

Darius

Hi,

I'm newbie in Rails. When I change routes.rb file Rails does not reload it, means /rails/info/routes shows same old routes and rake routes shows new. If I stop rails server and start again, it shows new routes. If I rename routes.rb files I get an exception routes.rb not found.

Yes, that is the way it works. If you change routes.rb you need to restart the server.

If I create new controller, change view and other files in app, I can see result in browser immediately, means rails reloads that code.

I'm using docker if it is important, Dockerfile: FROM ruby:2.2.0

RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y mysql-client postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*

RUN bundle config --global frozen 1

RUN mkdir -p /usr/src/app WORKDIR /usr/src/app

COPY Gemfile /usr/src/app/ COPY Gemfile.lock /usr/src/app/

RUN bundle install

EXPOSE 3000 CMD ["rails", "server", "-b", "0.0.0.0"]

I don't understand your point about why it is important in this case. Please clarify.

Colin

Hi,

I’m newbie in Rails. When I change routes.rb file Rails does not reload it,

means /rails/info/routes shows same old routes and rake routes shows new. If

I stop rails server and start again, it shows new routes. If I rename

routes.rb files I get an exception routes.rb not found.

Yes, that is the way it works. If you change routes.rb you need to

restart the server.

Even in development? On the web I find older resources saying routes.rb also is reloaded if file is changed.

If I create new controller, change view and other files in app, I can see

result in browser immediately, means rails reloads that code.

I’m using docker if it is important, Dockerfile:

FROM ruby:2.2.0

RUN apt-get update && apt-get install -y nodejs --no-install-recommends &&

rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y mysql-client postgresql-client

sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*

RUN bundle config --global frozen 1

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY Gemfile /usr/src/app/

COPY Gemfile.lock /usr/src/app/

RUN bundle install

EXPOSE 3000

CMD [“rails”, “server”, “-b”, “0.0.0.0”]

I don’t understand your point about why it is important in this case.

Please clarify.

It is really not inportant in this case. My thought was maybe Rails check if file was changed does not work because it is in container or something like that.

Darius

Yes, even in development. I do not remember a time when that was not the case, but my memory may be failing. Have you got a link?

Colin

One of links ruby - When do I need to restart server in Rails? - Stack Overflow

One of links ruby - When do I need to restart server in Rails? - Stack Overflow

Well it turns out I have been spouting garbage. Having just tried it on a Rails 3.2 and 4.1 app I find that it is not necessary to restart the server. Very odd, perhaps I am remembering from earlier versions and had not noticed that it had changed. So thanks Darius for helping me to find my mistake, it will save me time in the future.

That brings us back though to why you find you need to restart the server. Are you sure that is the case? Can you provide a concrete example?

Colin

Sometimes spring is running, preventing the server from picking up changes.