Я пытаюсь упаковать свое приложение Rails в файл war, используя Warbler, но есть некоторые странные проблемы, которые я не могу найти решения для
Проблема 1:
Когда я пытаюсь использовать jruby вместо ruby, ни один из файлов окружения или файлов в папке инициализаторов не загружается при запуске rails server.Я получаю сообщение об ошибке, говоря, что
NoMethodError: Cannot load `Rails.application.database_configuration`:
undefined method `dbDetails' for #<Rails::Application::Configuration:0x5c2a3f0c>
не определен метод, который определен в файле production.rb и расширен в файле инициализатора, который используется в файле ulimately database.yml (я пробовал вручную вводить учетные данные в database.yml, похоже, последовательность загрузки изменилась, после использования jruby файл database.yaml загружается перед файлами инициализаторов, но файл окружений никогда не загружается, будь то файл development.rb или файл production.rb, если я начну с предоставления соответствующего env в качестве атрибута rails s
команда).С файлами
нет проблем, связанных с правами доступа или владельцем, проблема 2:
независимо от того, что я делаю, файл war, созданный после использования warble war
, никогда не запускается в Tomcat 8.5 (не пробовал в любой другой версии).Если я проверяю логи catlinia, он говорит:
`[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [D:\tomcat\apache-tomcat-8.5.38\webapps\railsapp.war]
06-Mar-2019 21:42:29.089 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/railsapp]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:985)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: The archive [jar:file:/D:/tomcat/apache-tomcat-8.5.38/webapps/railsapp.war!/] is malformed and will be ignored: an entry contains an illegal path [WEB-INF/../] which was not expanded to [D:\tomcat\apache-tomcat-8.5.38\webapps\railsapp] since that is outside of the defined docBase [D:\tomcat\apache-tomcat-8.5.38\webapps\railsapp\]
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:141)
at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:609)
at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:742)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:395)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:149)
... 10 more`
**
Проблема 3:
** С другой стороны, исполняемый файл, созданный warble executable war
отлично работает с командой java -jar railsapp.war
, но я не могу запустить ее в безопасном режиме с протоколом https
Любая помощь, связанная с этими проблемами, будет очень признательна.Пожалуйста, дайте мне знать, если я не смогу дать вам понять мою проблему, я слишком устал в данный момент и буду счастлив, если кто-нибудь укажет на любые ошибки, которые я мог совершить
jruby version jruby 9.1.17.0 (2.3.3)
rails version Rails 5.1.6.1
Tomcat version apache-tomcat-8.5.38