【问题标题】:De-capistrano a rails app?Decapistrano 是一个 Rails 应用程序?
【发布时间】:2023-04-07 22:31:01
【问题描述】:

我继承了一个 Rails 站点,我需要将它部署(快点!)到我们的 webhost,这是一个标准的 *nix 共享服务器,它使用 FastCGI 来运行 rails 应用程序。我过去曾多次与 Rails 网站合作过,但无论如何我都不认为自己是专家。

这个特定的应用程序是使用 capistrano 开发的,我对此没有任何经验,而且我所阅读的所有内容都让我相信要“正确”部署该应用程序需要我设置一个外部 svn 帐户等考虑到我们的时间框架和托管情况,这是不可行的。

我的问题是:在不使用 capistrano 的情况下快速启动并运行此应用程序的最佳方法是什么?我连同站点文件一起收到了一个我已经导入的 .sql 转储,并且我已经配置了 config/database.yml 以反映正确的生产数据库设置。现在,运行 ruby script/console production 会产生以下错误消息:

/home/user1/ruby/gems/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:443:in `load_missing_constant':NameError: uninitialized constant ApplicationController

感谢您的考虑!

【问题讨论】:

    标签: ruby-on-rails capistrano deployment


    【解决方案1】:

    正如其他人已经说过的,您可能使用的版本不正确。

    Rails 在 2.1 或 2.2 版本中从 app_controller 切换到 application_controller(或类似的东西)。

    在这种情况下,您应该能够运行一个 rake 任务:

    rake rails:update:application_controller
    

    也许对你有帮助。

    至于 capistrano。在你的 deploy.rb 你可以添加参数 :deploy_via :

    set :deploy_via, :copy
    set :scm, :none
    

    它应该使用您在工作目录中的副本进行部署(不需要颠覆或任何其他版本控制)

    Copy 通常从本地存储库中获取代码,然后将其上传到服务器,但也将 :scm 设置为 none,它应该忽略这一点,而只是(希望)使用您的工作副本。

    【讨论】:

      【解决方案2】:

      所有 capistrano 需要的是一个 deploy.rb 和一个 Capfile,这不是导致您的错误的原因。从外观上看,问题似乎在于您使用的 gem rails 版本与您的应用程序不兼容,您知道它是用哪个版本开发的吗?如果是这样,您应该尝试将您的 rails 目录提供给正确的版本。

      对于部署,如果您使用的是 FastCGI,您只需将文件上传到主机并设置适当的权限即可。展望未来,您可能希望考虑升级到更新版本的 rails,使用 capistrano 并更改您的环境以使用 apache Passenger。

      我希望这会有所帮助。

      【讨论】:

      • jonnii,感谢您的回复。出售我的 rails 目录是什么意思?我很清楚这不是最佳实践方法,将来我将在 Rails 开发/部署中使用 git、capistrano 和乘客,但我需要让这个网站在最后上线当天。
      【解决方案3】:

      您遇到的问题似乎是您安装的版本与应用预期的版本不匹配。查看 config/environment.rb,往顶部看,你会看到如下内容:

      RAILS_GEM_VERSION = '2.3.4'
      

      您需要确保您机器上安装的 rails 版本与该文件中声明的任何版本相匹配。你可以通过运行来做到这一点:

      sudo gem install -v=X.X.X rails
      

      其中 X.X.X 与您的 environment.rb 中的内容相匹配。

      Jonnii 建议您通过将所有 rails 代码直接包含到您的项目中来“冻结”您的 rails,(这可以通过运行 rake rails:freeze:gems 在您按照上述步骤并获得正确的 gem 安装后完成首先。)一旦你冻结了rails,那么你就不再需要在你的网络服务器机器上安装rails gems了。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-18
        • 1970-01-01
        相关资源
        最近更新 更多