0

我希望你能提供帮助.. 我继承了我负责编辑的 Rails 中的一个小站点。我对 PHP 有很好的了解,但我完全是 Rails 的新手。

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

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

谢谢你的期待!

4

4 回答 4

1

如果您重新启动了提供服务的机器并且更改仍未显示,那么您正在编辑错误的文件。也许它真的是从这台机器上的另一个文件夹提供的?还是来自另一台机器?

于 2012-12-05T19:17:57.863 回答
0

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

PROJECTDIR/tmp/restart.txt

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

或者如果您有 ssh 访问权限,请运行

touch tmp/restart.txt 从你的 Rails 应用程序根目录


- -编辑 - -

抱歉没有看到你说你重启机器的部分。更有可能是资产管道的问题。

尝试删除公共/资产

然后运行

bundle exec rake assets:precompile

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

此外,如果这些答案没有帮助,了解您实际编辑的内容以及如何编辑可能会有所帮助。是css吗?标记?控制器?

于 2012-12-05T19:13:44.740 回答
0

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

  • git clone从源代码控制存储库(例如,从 GitHub使用)获取应用程序的本地副本
  • 在本地编辑文件(并进行测试,但您可能不在那里)
  • 提交并推送到源代码控制
  • runcap 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:clean请先运行。

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

当然,根据您的环境,可能还有许多其他依赖项需要管理。如果你甚至有一个远程高级环境,你应该找出如何正确部署的工作,可能使用 capistrano。

于 2012-12-05T20:34:56.110 回答
0

这就是我最后必须做的,我意识到这不是你使用 Rails 的方式..

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

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

于 2012-12-07T02:42:02.270 回答