我还没有真正找到任何有效的方法。我知道 Heroku 不允许子模块/扩展,所以为了安装它们,需要做一些替代。
我的例子是 Radiant Mailer。通常要安装它,我执行了这个:
./script/extension install mailer
在 Heroku 上进行这项工作的替代方法是什么?
我注意到我的问题仍然存在,因为即使我已经将rm
其wget
返回,git status
但仍然不承认它存在于那里。奇怪的..
我还没有真正找到任何有效的方法。我知道 Heroku 不允许子模块/扩展,所以为了安装它们,需要做一些替代。
我的例子是 Radiant Mailer。通常要安装它,我执行了这个:
./script/extension install mailer
在 Heroku 上进行这项工作的替代方法是什么?
我注意到我的问题仍然存在,因为即使我已经将rm
其wget
返回,git status
但仍然不承认它存在于那里。奇怪的..
好的,所以这是我找到的最好的方法。随意证明我错了:
像这样手动安装你的扩展:
cd /path/to/radiant/vendor/extensions
wget http://github.com/saturnflyer/radiant-help-extension/tarball/master
tar xzvf saturnflyer-radiant-help-extension-*.tar.gz
mv saturnflyer-radiant-help-extension-* help
cd /path/to/radiant
rake radiant:extensions:help:migrate
rake radiant:extensions:help:update
这里的特别说明以及我的问题引用链接中缺少的是:
如果您使用 Radiant 的内置./script/extension install
命令或 Ray,您可以忽略此部分,因为它仅适用于手动安装。
为了正确加载扩展,Radiant 需要扩展的目录名称与扩展的(类)名称相匹配。
匹配规则是标准的 Rails camelcase <→ snakecase 规则。例如,对于名为“Foo”的扩展,扩展目录名称必须命名为“foo”。对于名为“FooBar”的扩展,目录名称必须是“foo_bar”。如果您不遵守此约定,Radiant 将无法加载扩展程序并且应用程序将无法启动。迁移数据库时会出现错误,例如:
Could not load extension from file: some_extension.
#<NameError: uninitialized constant SomeExtension>
如何知道分机的真实姓名?为此,请在扩展目录中查找名称以“_extension.rb”结尾的文件。那是扩展的主要加载文件。扩展名的真实名称是该结尾之前的名称。在前面的示例中,该文件将分别称为“foo_extension.rb”和“foo_bar_extension.rb”。