在生产中编辑Rails应用

问题描述 投票:0回答:4

希望您能为您提供帮助。我已经继承了Rails中的一个小网站,负责编辑该网站。 我对PHP有很好的了解,但对Rails来说是个新手。

我需要对文件进行非常简单的编辑(已完成),但是保存后它不会显示在网站上。 该文件位于config目录中。 我已经重新启动了要从其提供服务的计算机(Mac OS 10.8),我已经在线搜索了许多答案,包括禁用缓存,将config.cache_classes更改为false以及将config.consider_all_requests_local更改为true,但是似乎没有任何效果。 该网站使用独角兽作为服务器。

我想念什么? 我意识到这可能是使用Rails的一种糟糕方法,我向自己保证我会学习的,但是现在我只需要知道如何进行实时更改,因为我习惯了使用html,php等通过FTP进行更改。

谢谢您的期待!

ruby-on-rails macos edit osx-mountain-lion production-environment
4个回答
1
投票

如果您重新启动了计算机,可以从中使用该计算机,但更改仍然不显示,则表示您一起编辑了错误的文件。 也许它确实是从此计算机上的另一个文件夹提供的? 还是从另一台机器?


0
投票

如果您具有ssh访问权限,则可能只需要从应用程序根目录运行touch tmp / restart.txt

PROJECTDIR / tmp / restart.txt

您可以通过任何文本编辑器在FTP服务器上打开tmp / restart.txt,然后按Ctrl + S(保存),以便触摸文件并重新启动服务器

或者如果您具有ssh访问权限

从Rails应用程序根目录触摸tmp / restart.txt


- -编辑 - -

对不起,您没有看到您说过重新启动机器的部分。 资产管道更有可能出现问题。

尝试删除公共/资产

然后运行

捆绑执行耙资产:预编译

我认为有一个命令可以清除并重新编译,但我不记得了

另外,如果这些答案无济于事,了解您实际编辑的内容和方法可能会有所帮助。 是css吗? 标记? 控制器?


0
投票

通常使用称为Capistrano的软件来部署Rails应用程序。 如果找到文件app/Capfileapp/config/deploy.rb则您的应用正在使用它。 Capistrano的典型工作流程是

  • 从源代码控制存储库中获取应用程序的本地副本(例如,使用来自GitHub的git clone
  • 在本地编辑文件(并进行测试,但可能不存在)
  • 提交并推送到源代码管理
  • 运行cap deploy来完成所有可能需要的事情,例如重新编译资产

capistrano的作用(最基本的用法)是:

  • your-app-name/releases/<date-filename>/创建一个子目录
  • 从源代码控制库中获取最新代码到该目录(例如git pull
  • your-app-name/current的符号链接替换为一个到新目录的链接
  • 重新启动服务器(如果使用Phusion Passenger,请touch your-app-name/current/tmp/restart.txt问题,否则,您可能需要重新启动Web服务器

如另一个答案所述,对“资产”(CSS,JS,图像)的更改将需要重新编译。 我认为bundle exec rake assets:precompile要从<your-app-name>子目录运行bundle exec rake assets:precompile ,但是如果事情搞砸了,请先运行bundle exec rake assets:clean

在某些情况下,capistrano和源代码控制被设置为要求部署使用进行部署的用户的本地凭据ssh-agentssh-add命令支持。 如果您的源代码管理系统不允许直接从服务器进行访问,则将需要这些(如果是这样,您将在app/config/deploy.rb看到ssh_options[:forward_agent] = true行)。

当然,根据您的环境,可能还有许多其他依赖项需要管理。 如果您甚至拥有一个远程高级环境,则应该进行工作,弄清楚如何正确部署方式,可能使用capistrano。


0
投票

这是我最后要做的,而且我意识到这并不是您使用Rails的方式。

我备份了应用程序目录,重新映像了用于测试它的开发机。 按照http://rubyonrails.org/download执行了Ruby on Rails的全新安装。 我用相同的名称创建了一个新的空应用程序,然后将正在使用的应用程序的内容复制到新的应用程序框架中,选择不覆盖任何现有文件。 然后,我安装了Passenger,并将其作为独立运行。 这使我的应用程序重新启动并运行,现在,当我在config / initializers中对文件进行任何更改时,它们在我重新启动passenger时就会反映出来。 所以我很好。

现在,我需要学习如何真正做到这一点。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.