2010-12-25 12 views
0

ファイルを必要とするコントローラまたはモデルでアプリケーションが返ってエラーが発生します。 通常、私は以下のようなファイルが必要です。Rail 3 - Passenger path問題

require '/lib/position_mover' 

私はちょっと遊んでいましたが、私のサーバーの最上位のディレクトリからパスを指定するとうまくいくようです。

require '/srv/www/testapp/lib/position_mover' 

多くの理由から、相対パスを使用します。誰かが私にこれに関する指示を与えることができますか?

サーバ設定:

  • のApache 2
  • のUbuntu 10.10
  • レール3.0.3
  • ルビー1.9.2p0
  • mysqlの

仮想ホスト:

<VirtualHost 173.255.238.220> 
    ServerName test.targesoft.com 
    DocumentRoot /srv/www/testapp/public/ 
    <Directory /srv/www/testapp/public/> 
     PassengerAppRoot /srv/www/testapp/ 
     Allow from all 
     Options -MultiViews 
    </Directory> 
</VirtualHost> 

答えて

1

あなたがRailsのアプリのlibディレクトリ内のファイルを必要としている場合、それは必要はありません。 Railsにはデフォルトですべてが必要です。

+1

悲しいことに、Rails 3にはもういないので、今は手動で必要とする必要があります。 –

+0

また、それらをautoload_path設定に追加することもできます。また、それらの定数が参照されると、オートロードされます –

0

ありがとうございました!プラグインはlibフォルダの難しさですが、実際に私自身のカスタムモジュールを呼び出しています。私はモデルの先頭から必要なものを取り出してみましたが、ファイルの先頭に必要なものがなければ、定義されていない定数のエラーが出ます。乗客がデフォルトで自分のディレクトリを見るように乗客を設定する方法が必要です。

module PositionMover 

    def move_to_position(new_position) 
    max_position = self.class.where(position_scope).count 
    # ensure new_position is an integer in 1..max_position 
     unless new_position.nil? 
     new_position = [[1, new_position.to_i].max, max_position].min 
     end 

     if position == new_position # do nothing 
     return true 
     elsif position.nil? 
     increment_items(new_position, 1000000) 
     elsif new_position.nil? 
     decrement_items(position+1, 1000000) 
     elsif new_position < position 
     increment_items(new_position, position-1) 
     elsif new_position > position 
     decrement_items(position+1, new_position) 
     end 
     return update_attribute(:position, new_position) 
    end 


    def position_scope 
    "1=1" 
    end 

    def increment_items(first, last) 
    items = self.class.where(["position >= ? and position <= ? AND #{position_scope}", first, last]) 
    items.each {|i| i.update_attribute(:position, i.position + 1)} 
    end 


    def decrement_items(first, last) 
     items = self.class.where(["position >= ? and position <= ? AND #{position_scope}", first, last]) 
     items.each {|i| i.update_attribute(:position, i.position - 1)} 
    end 


end 
1

あなたはlibディレクトリにこのモジュールを配置し、あなたのconfig/application.rbファイル(デフォルトでは、コメントアウトされ、設定)にconfig.autoload_pathsに追加したいと思うでしょう。あなたのコードでこのモジュールを参照すると、Railsはファイルをlibディレクトリに必要とすることを自動的に知ります。

関連する問題