2013-02-12 3 views
0

내 응용 프로그램 디렉토리 내에서 rackup 실행, 그것을 잘 작동합니다 :루트 디렉토리 외부에서 설정 파일을 래크 업하는 방법은 무엇입니까?

[email protected]:~/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을 실행하려고하면 : 나는 '때

[email protected]:~$ 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를 실행할 수 있습니다 루트 디렉토리 안에 있지 않습니까? 당신은 왜 그냥 rackup config.ru 파일에 수정을 추가하지 수동으로 cd 담화 루트 폴더를하지 않으려면

+0

당신은 그 디렉토리에'cd'를 걸고'rackup'을 실행하십시오 –

+0

@SergioTulentsev : 분명히 당신은 그렇게하지 않을 수있는 몇 가지 선택권이 있습니까? – Casebash

+0

글쎄, 어떻게하면 현재 디렉토리에 비해 파일 조회를 성공적으로 수행 할 수 있습니까? 왜 당신이'cd' 안돼, 당신은 정교 할 수 있니? –

답변

1

, 그것은 rackup에 문제가 아닙니다; 코드에 문제가 있습니다.

당신은 어딘가에

require './lib/discourse_plugin_registry' 

있습니다. 이상적이지 않습니다. 그것이 작동하지 않습니다 - 당신은 현재 디렉토리를 변경할 때까지

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

당신이 그것을 가지고하는 방법, 그것은 상관없이 당신이 rackup에 무엇을 명시 적으로 현재 디렉토리를 사용하지 않으며, : 그것은 오히려 무언가 같이해야합니다.

5

: 사실

# Insert as first line in config.ru 
Dir.chdir(File.dirname(File.expand_path(__FILE__))) 
관련 문제