2009-06-29 15 views
6

RoR geliştiricisiyim, ancak şu anda sunucuyu değiştiremediğim bir proje için CakePHP ile çalışıyorum. Rails üretim sunucumda, Yolcu, yerel uygulama kurulumunu geçersiz kılarak "Üretim" ortamını otomatik olarak kullanmak üzere kurulur. Aynı şeyi yapmak için cakephp uygulamasını kurmak istiyorum. Bunu genellikle CakePHP ile nasıl başarırsınız? Bir etki alanı ayrıştırıcısı mı kuruyorsunuz yoksa core.php ve database.php'yi sürüm denetimi dışında tutuyor musunuz? ve core.php dosyasındaki versiyon kontrol dışı tutmak olduğunu sadece tek Configure::write('debug', 0) * yönergesini tutan ekstra dosyası oluşturabilirCakePHP'yi geliştirme/üretim ortamlarımı algılayacak şekilde nasıl yapılandırabilirim veya yapılandırma dosyalarını sürüm denetimi dışında tutuyor muyum?

cevap

11

, bu size gereken şey olabilir/bootstrap.php içinde dev. Bu şekilde, uygulama genelinde sabitleri tekrar kullanabilirsiniz.

bootstrap.php:

define('IS_PROD',(isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'cubismedia.com') ? true : false); 

DatabaseFunctions.php:

function __construct() { 
     if (IS_PROD) { 
      $this->default = $this->prod; 
     } else { 
      $this->default = $this->dev; 
     } 
    } 

//development 
public $dev = array(
    //db settings 
); 

//production 
public $prod = array(
    //db settings 
); 
+0

Mükemmel, yardımcı aynen waht ben – nutsmuggler

+0

memnun bu makalede arıyordu :) geribildirim Bağlantı artık çalışmıyor – Eddie

+1

bırakın. Gelecekte, bunun gerçekleşmesi durumunda önemli ayrıntıların bir bağlantıdan alıntılanması iyi bir fikirdir. – BMitch

1

peşin sayesinde Davide, ithalat. Her iki dünyanın en iyisi.

* veya veritabanı için

1

değiştirmenize gerek başka ne, yerel ve üretim bağlantı ayarlarını kurmak ve ardından dosya uygulaması/app_model.php oluşturmak ve çizgi içerebilir:

class AppModel extends Model 
{ 
    var $useDbConfig = 'production'; 
} 

Daha sonra, app/app_controller.php dosyasını oluşturabilir ve etki alanlarını ayrıştırabilir ve Configure :: write kullanarak hangi dbconfig'in ve diğer core.php ayarlarının kullanılacağını söyleyebilirsiniz.

class DATABASE_CONFIG 
{ 
    //initalize variable as null 
    var $default=null; 

    //set up connection details to use in Live production server 
    var $prod = 
     array(
      // ... 
     ); 

    // and details to use on your local machine for testing and development 
    var $dev = 
     array(
      // ... 
     ); 

    function __construct() 
    {  
     if(isset($_SERVER['SERVER_NAME'])){ 
      switch($_SERVER['SERVER_NAME']){ 
       case 'digbiz.localhost': 
        $this->default = $this->dev; 
        break; 
       case 'digbiz.example.com': 
        $this->default = $this->prod; 
        break; 
      } 
     } 
     else // we are likely baking, use our local db 
     { 
      $this->default = $this->dev; 
     } 
    } 
} 
7

eşya tanımlamak daha iyi olabilir: DATABASE_CONFIG yapıcı geçersiz,

Automatically choose database connections in CakePHP

Kısaca: Soruyu doğru anladıysam

+1

Bu temelde yaptığım şey ama bunu core.php'de bir seviyeye kadar yapıyorum. Orada "APPLICATION_ENV" diye bir sabit belirledim, böylece kodun başka bir yerinde referans verebilirim ve ayrıca veritabanı ana bilgisayarı, api tuşları gibi şeyler için sabitleri (yapılandırma değerleri de çalışır) tanımladığım bir ortama özgü yapılandırma dosyası yüklerim. –

İlgili konular