您可以直接从 Heroku 控制台编辑 .erb 文件吗?

Can you edit a .erb file directly from the Heroku Console?

我想知道这是否由于版本控制而无法实现。但是,我想知道是否有一种方法可以直接查看 .html.erb 文件中的代码并对其进行编辑以对拼写错误进行小的更改,而无需重新部署整个应用程序。

我打开了 Heroku 控制台,输入 Dir.chdir "app/views/pages"。这将我带到目录中的正确文件夹。

√ _testApps/[app_name] % heroku console  
irb(main):001:0> Dir.chdir "app/views/pages"
=> 0

然后我可以 Dir.glob("*.erb") 查看该目录中具有该扩展名的所有文件的列表。

irb(main):002:0> Dir.glob("*.erb")
=> ["sitemap.html.erb", "about.html.erb", "home.html.erb", "guide.html.erb", 
"media_kit.html.erb", "social.html.erb", "terms_of_use.html.erb", "aids.html.erb", 
"expectations.html.erb", "faq.html.erb", "privacy_policy.html.erb", "contact_us.html.erb"]

现在,我想要做的是您可以在开发中更改凭据所做的事情 nano rails credentials:edit。但是,nano rails home.html.erb:editnano rails home:edit 不起作用。这是我尝试过的所有各种方式的输出:

irb(main):003:0> nano rails home.html.erb:edit
Traceback (most recent call last):
    1: from (irb):3
NameError (undefined local variable or method `home' for main:Object)

irb(main):004:0> nano rails home:edit
Traceback (most recent call last):
    2: from (irb):3
    1: from (irb):4:in `rescue in irb_binding'
NameError (undefined local variable or method `edit' for main:Object)
Did you mean?  exit

irb(main):005:0> nano home:edit
Traceback (most recent call last):
    2: from (irb):4
    1: from (irb):5:in `rescue in irb_binding'
NameError (undefined local variable or method `edit' for main:Object)
Did you mean?  exit 

irb(main):006:0> home:edit
Traceback (most recent call last):
    2: from (irb):5
    1: from (irb):6:in `rescue in irb_binding'
NoMethodError (undefined method `home' for main:Object)

irb(main):007:0> home.html.erb:edit
Traceback (most recent call last):
    2: from (irb):6
    1: from (irb):7:in `rescue in irb_binding'
NameError (undefined local variable or method `home' for main:Object)

irb(main):008:0> edit home.html.erb
Traceback (most recent call last):
    2: from (irb):7
    1: from (irb):8:in `rescue in irb_binding'
NameError (undefined local variable or method `home' for main:Object)

irb(main):009:0> edit home
Traceback (most recent call last):
    2: from (irb):8
    1: from (irb):9:in `rescue in irb_binding'
NameError (undefined local variable or method `home' for main:Object)

irb(main):010:0> edit "home.html.erb"
Traceback (most recent call last):
    2: from (irb):9
    1: from (irb):10:in `rescue in irb_binding'
NoMethodError (undefined method `edit' for main:Object)
Did you mean?  exit

这可能吗?还是因为版本控制不允许,必须在本地做,commit到git然后pushgitmaster去改?想知道,因为无需执行所有其他步骤即可进行快速编辑会很好。并且无需使页面动态化并将信息存储在 table 中以在浏览器中进行编辑。

感谢您的见解。

首先(留待以后参考),您似乎将控制台当作 bash shell,但 heroku console 只是启动 Rails 安慰。因此,nano rails... 之类的东西不起作用,因为它们无效 ruby。 运行 heroku run bash 将启动一次性测功机并给你一个 bash shell.

要回答您的主要问题,推送 git 分支是推送更改的方法。关于 Heroku,有几件事需要了解,这有助于解释原因:

  1. 当您 运行 heroku run bash 时,Heroku 会为该会话启动一个单独的一次性测功机,其中包含您的应用程序文件结构的副本。这对于故障排除非常有用,但它实际上并没有以任何方式将您连接到 dyno 运行ning 您的应用程序。因此,如果您在那里编辑文件,它不会影响 运行ning 应用程序代码。
  2. 当您将图像推送到 Heroku 时,它会构建一个预先打包的图像 您的应用程序称为 slug。每当您重新启动您的应用程序时,它就是 从那些 slug 重新加载,所以即使你使用 hack 连接到 你的 运行ning dyno 并更改了一个文件,它只会持续到 下次应用重新启动时。