0

アプリ ディレクトリ内から Rackup を実行すると、正常に動作します。

walkraft@li234-166:~/discourse$ rackup config.ru
Flushing redis (development mode)
/home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `block in require': iconv will be deprecated in the future, use String#encode instead.
/home/walkraft/discourse/vendor/gems/message_bus/lib/message_bus.rb:130: warning: already initialized constant ENCODE_SITE_TOKEN
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:9292, CTRL+C to stop

ただし、このディレクトリの外から Rackup を実行しようとすると、次のようになります。

walkraft@li234-166:~$ rackup discourse/config.ru
/home/walkraft/discourse/config/application.rb:7:in `require': cannot load such file -- ./lib/discourse_plugin_registry (LoadError)
        from /home/walkraft/discourse/config/application.rb:7:in `<top (required)>'
        from /home/walkraft/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /home/walkraft/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /home/walkraft/discourse/config/environment.rb:2:in `<top (required)>'
        from /home/walkraft/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /home/walkraft/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /home/walkraft/discourse/config.ru:2:in `block in <main>'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/builder.rb:51:in `instance_eval'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/builder.rb:51:in `initialize'
        from /home/walkraft/discourse/config.ru:in `new'
        from /home/walkraft/discourse/config.ru:in `<main>'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/builder.rb:40:in `eval'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/builder.rb:40:in `parse_file'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/server.rb:200:in `app'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/server.rb:304:in `wrapped_app'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/server.rb:254:in `start'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/lib/rack/server.rb:137:in `start'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/gems/rack-1.4.4/bin/rackup:4:in `<top (required)>'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/bin/rackup:19:in `load'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/bin/rackup:19:in `<main>'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/bin/ruby_noexec_wrapper:14:in `eval'
        from /home/walkraft/.rvm/gems/ruby-1.9.3-p374/bin/ruby_noexec_wrapper:14:in `<main>'

ルート ディレクトリ内にいないときに、rackup を実行するにはどうすればよいですか?

4

2 に答える 2

5

Discourse ルート フォルダーに手動で移動したくない場合は、単にラックアップファイルcdに修正を追加してみませんか。config.ru

# Insert as first line in config.ru
Dir.chdir(File.dirname(File.expand_path(__FILE__)))
于 2013-02-12T13:33:42.223 に答える
1

実際、それは問題ではありませんrackup; それはあなたのコードの問題です。

あなたが持っている

require './lib/discourse_plugin_registry'

どこか。これは理想的ではありません。それはむしろ次のようなものであるべきです:

require File.expand_path('../../lib/discourse_plugin_registry', __FILE__)

あなたが持っている方法では、現在のディレクトリを明示的に使用し、現在のディレクトリを変更するまで何をしても機能しrackupません。

于 2013-02-12T13:44:52.610 に答える