首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Torquebox LoadError -没有这样的文件要加载-- torquebox/服务注册中心

Torquebox LoadError -没有这样的文件要加载-- torquebox/服务注册中心
EN

Stack Overflow用户
提问于 2015-07-12 04:30:06
回答 1查看 402关注 0票数 0

安装了torquebox服务器gem。

$torquebox run没事。程序在Apache上运行良好,通过:80和SSL :8009。

这里是它最受欢迎的地方:“”在UpStart中运行良好,只有一个例外。浏览器中没有错误。只是一页空白的白纸。我用的是朱红。这是torquebox日志:

无法要求文件: torquebox/service_registry: org.jruby.exceptions.RaiseException:(LoadError)没有这样的文件来加载- torquebox/service_registry at jruby.jar: at RUBY.require(/home/klyde/.rubies/jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) at RUBY.(根)(:1)

当然,上面的目录和文件是存在的,就像torquebox自己的日志显示的那样。

torquebox run似乎执行得很好,因为jruby-1.7.19 (与Torquebox在JRuby-1.7.19上的V3.1.2运行时相同)、gems和程序都位于我的Ubuntu用户'klyde‘之下。但是这个命令只是用于开发/测试。当作为服务运行时,Torquebox会侧视“torquebox”用户,并拥有自己的bashrc。是的,Torquebox需要自己的用户!因此,在klyde和torquebox这两个用户下,bashrc包含相同的内容:

代码语言:javascript
复制
export TORQUEBOX_HOME=/home/klyde/.gem/jruby/1.9.3/gems/torquebox-server-3.1.2-java
export TORQUEBOX_HOME_RAKE_SUPPORT=/home/klyde/.gem/jruby/1.9.3/gems/torquebox-rake-support-3.1.2
export TORQUEBOX_SERVER=/home/klyde/.gem/jruby/1.9.3/gems/torquebox-server-3.1.2-java
export JBOSS_HOME=$TORQUEBOX_SERVER/jboss
export JRUBY_HOME=/home/klyde/.rubies/jruby-1.7.19
export PATH=$JRUBY_HOME/bin:$PATH

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

我读过Torquebox通过它自己版本的jruby运行时来预测路径等,而不是chruby (或rvm,rbenv)可能做的事情。本着这种精神,我将torquebox用户添加到klyde组中。我提高了对我的klyde .gem目录中的几个文件的权限,提供了快速而肮脏的解决方案。我甚至尝试过chown -R torquebox:torquebox /home/klyde/..rubies。没有运气)

问:我必须重新安装所有的东西,包括程序,在torquebox用户下面,好像这会起作用吗??还是有一种更优雅(理智)的方法?

EN

回答 1

Stack Overflow用户

发布于 2015-07-13 11:44:23

解决方案:

解决了。我自己回答问题。这是我记得的一堆小费。

这件事的核心似乎是宝石之路的问题。请看下面的评论。 还有这个。,而Ruby经理通常喜欢把宝石和红宝石分开,例如。当您查看Torquebox附带的本机JRuby时,您将看到Torquebox将宝石镶嵌在JRuby自己的子文件夹中:

/opt/torquebox/torquebox-3.1.2/jruby/lib/ruby/gems/shared/gems/

为了证明这一点,您将看到Torquebox二进制下载包含了gem套件“torquebox-server”。

我用了朱砂,然后跑了:

代码语言:javascript
复制
$ jruby -S gem install torquebox-server

和RVM一样,它使用“torquebox run”也很好。但是为了利用类似于生产的命令'sudo service torquebox start‘,我发现有必要下载二进制文件并在/opt下安装,以便遵循'upstart’的说明。

莺为JBoss准备一个JBoss文件。但是封装JBoss的Torquebox提供了自己的代码,旨在取代.war的需求。但是,无论是“torquebox run”还是“sudo service torquebox start”,都是调用bundler。因此,如何通过邦德勒放置宝石似乎很重要。将宝石复制/粘贴到本机JRuby中(/opt/torquebox/torquebox-3.1.2/jruby.)可能行不通(就像我发现的那样)。

假设您(明智地)希望在~/下使用您自己的JRuby,并且在设置了环境变量之后(如我所示),那么在终端中,您会希望看到这样的内容:

代码语言:javascript
复制
$ jruby -S gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.5
- RUBY VERSION: 1.9.3 (2015-01-29 patchlevel 551) [java]
- INSTALLATION DIRECTORY: /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared
- RUBY EXECUTABLE: /home/klyde/.rubies/jruby-1.7.19/bin/jruby
- EXECUTABLE DIRECTORY: /home/klyde/.rubies/jruby-1.7.19/bin
- SPEC CACHE DIRECTORY: /home/klyde/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /home/klyde/.rubies/jruby-1.7.19/etc

- GEM PATHS:
- /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared

注意.rubies,而不是.gem。

如果启用了RVM或rbenv或chruby,它将尝试控制GEM_HOME。这必须是禁用的。有一个建议,请参阅/etc/profile.d/

在任何目录中,GEM_HOME都应该是空的,或者至少指向JRuby子文件夹中的路径。

作为一种考验:

代码语言:javascript
复制
$ echo $GEM_HOME
(here we can have a blank line)

和~/..gemrc

代码语言:javascript
复制
install: --no-ri --no-rdoc
update:  --no-ri --no-rdoc 

gemhome: /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared
gempath: /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared

虽然上面的手册编辑会起作用,多不文明!)特别是在开发中,使用管理器来切换每个程序的红宝石是很方便的。为了充分利用这两个世界,我将以chruby为例。

ruby/jruby中用于宝石的自然目录实际上在它自己的子文件夹中。我是GEM_ROOT。GEM_ROOT保持不变。chruby根据它在GEM_HOME中找到的内容改变或人为地创建GEM_PATH和GEM_ROOT。然后,它继续将宝石归档到~/..gem下面。观察:

代码语言:javascript
复制
$ echo $GEM_ROOT    
/home/klyde/.rubies/ruby-2.2.2/lib/ruby/gems/2.2.0

$ echo $GEM_HOME
/home/klyde/.gem/ruby/2.2.2

$ echo $GEM_PATH
/home/klyde/.gem/ruby/2.2.2:/home/clyde/.rubies/ruby-2.2.2/lib/ruby/gems/2.2.0

对于jruby..。

代码语言:javascript
复制
$ echo $GEM_ROOT    
/home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared

$ echo $GEM_HOME
/home/klyde/.gem/jruby/1.9.3

$ echo $GEM_PATH
/home/klyde/.gem/jruby/1.9.3:/home/clyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared

若要在chruby中重写此操作,请执行以下操作:

/usr/local/share/chruby/chruby.sh

代码语言:javascript
复制
function chruby_use()
{
    ....
    if (( $UID != 0 )); then
        # export GEM_HOME="$HOME/.gem/$RUBY_ENGINE/$RUBY_VERSION"
        # export GEM_PATH="$GEM_HOME${GEM_ROOT:+:$GEM_ROOT}${GEM_PATH:+:$GEM_PATH}"
        # export PATH="$GEM_HOME/bin${GEM_ROOT:+:$GEM_ROOT/bin}:$PATH"

        export GEM_HOME="$GEM_ROOT"
        export GEM_PATH="$GEM_ROOT"
        export PATH=$GEM_HOME/bin:$PATH
        export PATH=$GEM_PATH/bin:$PATH
    fi
}

每个红宝石/jruby都成为自己的宝石集。如果您不反对,这种快速编辑在chruby将解决您的问题与Torquebox的严格方式引用宝石。你仍然可以像往常一样在程序之间使用管理器。重新编辑chruby.sh,可以将管理器返回到它的默认行为。就这么简单!)

了解这个涉及GEM_ROOT的小技巧,也许同样的补救方法可以应用于RVM和rbenv。

  1. 安装:我使用chruby或“”,并在~/下安装红宝石。使用任何一种,红宝石/红宝石进入~/.红宝石。
  2. 安装Torquebox二进制:在Ubuntu14.04上,我精确地遵循了Torquebox手册21.1.2 Torquebox的安装。
  3. Env :如果使用上面描述的GEM_ROOT技巧,RUBY_HOME和JRUBY_HOME可能会被忽略。

/etc/profile.d/torquebox.sh:

代码语言:javascript
复制
export TORQUEBOX_HOME=/opt/torquebox/current
export JBOSS_HOME=$TORQUEBOX_HOME/jboss
export JRUBY_HOME=/home/klyde/jruby-1.7.19
PATH=$JBOSS_HOME/bin:$JRUBY_HOME/bin:$PATH

我还编辑了..。/etc/概况

代码语言:javascript
复制
export TORQUEBOX_HOME=/opt/torquebox/current
export JBOSS_HOME=$TORQUEBOX_HOME/jboss
export JRUBY_HOME=/home/klyde/jruby-1.7.19

PATH=$JBOSS_HOME/bin:$JRUBY_HOME/bin:$PATH
export RUBY_HOME=/home/klyde/ruby-2.2.2

export PATH=$RUBY_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
  1. Sym链接或移动torquebox.conf的副本: /opt/torquebox/torquebox-3.1.2/share/init/torquebox.conf 转入: /etc/init/torquebox.conf

然后编辑一行。JBoss需要一条通向其打开按钮(standalone.sh)的清晰路径:

代码语言:javascript
复制
/opt/torquebox/current/jboss/bin/standalone.sh >> /var/log/torquebox/torquebox.log 2>&1
  1. 启用“sudo service torquebox start”和rake upstart,Torquebox手动18.4服务器控件。
  2. 如果使用nokogiri:

我用1.6.1代替nokogiri 1.6.6.2。对许多人来说,这一改变是必要的。谷歌它获得更多信息。它以1.6.1-java和我的Gemfile (gem‘nokogiri,'1.6.1-java')的形式出现在宝石列表中。您可能必须删除(删除) Gemfile.lock的内容,并直接编辑它- nokogiri (1.6.1-java)。“$jruby -S bundle”在直接编辑后不会覆盖Gemfile.lock,正如“包安装或更新”一样:

代码语言:javascript
复制
$jruby -S gem install nokogiri 1.6.1

此站点通常在SSL下。为了那些好奇的人,也为了我,如果我忘记了,下面是我的Apache代理Torquebox的样子:

/etc/apache2/sites现有/example.conf

代码语言:javascript
复制
<VirtualHost example.com:80>
    ServerAdmin webmaster@localhost
    ServerName example.com
    Redirect / https://example.com
</VirtualHost>

/etc/apache2/sites现有/示例-ssl.conf:

代码语言:javascript
复制
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>

        SSLEngine on
        SSLCertificateFile   /etc/apache2/ssl/certs/16746xxxxxbbac.crt
        SSLCertificateChainFile /etc/apache2/ssl/certs/sf_bundle-g2-g1.crt
        SSLCertificateKeyFile /etc/apache2/ssl/private/ks.key

        ServerAdmin webmaster@localhost
        ServerName example.com
        ServerAlias example.com
        DocumentRoot /home/klyde/ror/exampleprog/public

        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPassReverseCookiePath / /
        ProxyPass /errors/ !
        ProxyPass / ajp://localhost:8009/
        ProxyPassReverse / ajp://localhost:8009/

        <Proxy *>
            AddDefaultCharset off
            Require all granted
            Order allow,deny
            Allow from all
        </Proxy>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    </VirtualHost>
</IfModule>

/opt/torquebox/torquebox-3.1.2/jboss/standalone/configuration

代码语言:javascript
复制
<subsystem xmlns='urn:jboss:domain:web:1.4' default-virtual-server='default-host' native='false'>
    <connector name='http' protocol='HTTP/1.1' scheme='http' socket-binding='http'/>
    <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding='ajp' />
    <virtual-server name='default-host'>
        <alias name='localhost'/>
        <alias name='example.com'/>
    </virtual-server>
</subsystem>

必要时修复权限。以用户的身份运行“torquebox”可能会克服一些第一次碰到的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31364385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档