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

时间:2020-06-26 19:21:27

标签: ruby-on-rails heroku console

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

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

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

这有可能吗?还是由于版本控制而不允许这样做,而您必须在本地进行,提交给git,然后按git master进行更改?很好奇,因为无需进行所有其他步骤即可进行快速编辑会很好。无需使页面动态化并将信息存储在要在浏览器中编辑的表中。

感谢您的见解。

1 个答案:

答案 0 :(得分:1)

首先(放在一边,以备将来参考),您似乎在将控制台视为bash shell,但是heroku console只是旋转了Rails控制台。因此,nano rails...之类的东西不起作用,因为它们不是有效的红宝石。运行heroku run bash将启动一次性的dyno,并为您提供bash shell。

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

  1. 运行heroku run bash时,Heroku会为该会话使用应用程序文件结构的副本启动单独的一次性dyno。这对于故障排除很有用,但实际上并没有以任何方式将您连接到运行您的应用程序的dyno。因此,如果您在此处编辑文件,则该文件不会影响正在运行的应用程序代码。
  2. 将图像推送到Heroku时,它会构建一个预先打包的图像 您的应用程序称为“ slug”。每当您重新启动应用程序时 从这些弹头重新加载,所以即使您使用黑客连接到 您正在运行的dyno并更改了文件,它只会持续到 下次应用重新启动。
相关问题