【问题标题】:Why do I have to restart apache to properly refresh a Ruby on Rails view in the browser?为什么我必须重新启动 apache 才能在浏览器中正确刷新 Ruby on Rails 视图?
【发布时间】:2010-11-09 13:41:27
【问题描述】:

我正在尝试学习一点 Ruby。我已经在我的 Ubuntu 机器上安装了 Ruby,我正在使用 apache。一切正常,除了刷新视图我必须在控制台中重新启动 apache 然后按 ctrl-r,只需按 ctrl-r 不会刷新浏览器。

显然有一些缓存正在进行,但它必须是这样吗,即它是 Ruby on Rails 固有的吗?我试过用谷歌搜索,但似乎唯一的答案是安装一些冗长的例程。对于开发来说,这似乎是一条相当乏味的路。

【问题讨论】:

    标签: ruby-on-rails caching refresh


    【解决方案1】:

    我使用 Apache 和 mod_fcgid。我发现了

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

    每次我想要重新加载应用程序都对我有用。

    【讨论】:

      【解决方案2】:

      Apache 是开发的绝佳选择。

      只需安装Passenger (mod_rails)...并按照说明操作...

      我为每个站点设置它,以便 /etc/hosts 包含

      127.0.0.1 myapp
      

      我在 /etc/apache2/sites-available/myapp 中使用带有类似条目的 Apache 虚拟主机

      <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>
      

      启用并重新启动

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

      这样,没有正在运行的脚本/服务器......它总是在开发模式下运行 - 只需将您的浏览器指向 http://myapp

      【讨论】:

      • 正是我想要的。我尝试了上面使用 Apache 作为前端的 Mongrel 解决方案,但是当您已经为您的 php 开发配置了所有这些 apache-stuff 并且只想启动并运行时,这是一个更好的解决方案。
      【解决方案3】:

      我将 Apache 与Passenger(又名modrails)一起用于开发目的,它在这里运行良好。只需通过在 httpd.conf 中设置“RailsEnv development”来确保在开发模式下使用 Rails。

      【讨论】:

        【解决方案4】:

        不要将 apache 用于开发模式。使用脚本/服务器并安装 mongrel gem (sudo gem install mongrel)。 Mongrel 比 WEBrick 更快,并将开发日志转储到运行它的控制台。它使开发变得体面。

        【讨论】:

        • Vista 除外。 Mongrel 在 Vista 中很慢,请改用 webrick。
        • Ruby/Rails 在 Windows 上通常很慢。在 Linux VM 中开发确实更容易,特别是如果您的应用程序足够不平凡。我很确定我当前的项目甚至不能在非 *nix 系统上运行。
        【解决方案5】:

        在 Rails 这样的情况下,Apache 不是一个好的开发选择,因为您确实需要在每次更改代码时重新启动服务器。 Rails 附带了自己的开发服务器,您可以通过执行 (IIRC) 脚本/服务器来开始。它更适合开发,因为它不需要在每次更改后重新启动。

        【讨论】:

        • 我同意你不应该将 apache 用于开发,mongrel 更容易,但是将乘客中的 RailsEnv 设置为开发意味着它不会对视图、类等进行所有缓存,所以您不必重新启动。仍然认为在本地开发中使用 mongrel 或 webrick 会更容易
        • 我不同意。根据我的经验,将开发环境与部署环境保持接近可以在上线时节省很多麻烦,尤其是在附加模块和第三方库方面。我们在开发过程中使用 Debian 时遇到了问题,然后不得不在启用 SELinux 的 CentOS 上进行部署...保持开发环境与部署环境接近。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 2011-04-20
        • 2022-08-12
        • 2012-08-20
        • 1970-01-01
        • 2022-11-23
        相关资源
        最近更新 更多