예제 #1
0
파일: Rails.php 프로젝트: railsphp/railsphp
 public static function assets()
 {
     if (!self::$assets) {
         self::$assets = Rails\Assets\Assets::instance();
         $prefix = str_replace('\\', '/', self::$config->assets->prefix);
         $basePaths = [str_replace('\\', '/', Rails::config()->paths->application) . $prefix, str_replace('\\', '/', Rails::root() . '/lib') . $prefix, str_replace('\\', '/', Rails::root() . '/vendor') . $prefix];
         $paths = [];
         foreach ($basePaths as $basePath) {
             if (!is_dir($basePath)) {
                 continue;
             }
             $dir = new DirectoryIterator($basePath);
             foreach ($dir as $file) {
                 if ($file->isDot() || !$file->isDir()) {
                     continue;
                 }
                 $paths[] = $file->getPathname();
             }
         }
         $customPaths = Rails::application()->config()->assets->paths->toArray();
         $paths = array_merge($paths, $customPaths);
         self::$assets->addPaths($paths);
         self::$assets->addFilePatterns(self::config()->assets->patterns->toArray());
     }
     return self::$assets;
 }
예제 #2
0
 public function assetPath($source, array $options = [])
 {
     if (strpos($source, '/') !== 0 && strpos($source, 'http') !== 0) {
         if (!isset($options['digest'])) {
             $options['digest'] = true;
         }
         if (\Rails::config()->assets->enabled) {
             if (\Rails::config()->serve_static_assets && $options['digest']) {
                 if ($url = \Rails::assets()->findCompiledFile($source)) {
                     return $url;
                 }
             }
             if ($file = \Rails::assets()->findFile($source)) {
                 return $file->url();
             }
         }
         return \Rails::application()->router()->rootPath() . $source;
     } else {
         return $source;
     }
 }
예제 #3
0
 public function run()
 {
     switch ($this->mainArgv) {
         case 'generate':
             $gen = new Generators\Generator($this);
             $gen->parseCmd();
             break;
         case 'assets':
             $rules = ['assets' => '', 'action' => ''];
             $opts = new Zend\Console\Getopt($rules);
             $argv = $opts->getArguments();
             if (empty($argv[1])) {
                 $this->terminate("Missing argument 2");
             }
             \Rails::resetConfig('production');
             switch ($argv[1]) {
                 case 'compile:all':
                     \Rails::assets()->setConsole($this);
                     \Rails::assets()->compileAll();
                     break;
                 case strpos($argv[1], 'compile:') === 0:
                     $parts = explode(':', $argv[1]);
                     if (empty($parts[1])) {
                         $this->terminate("Missing asset name to compile");
                     }
                     \Rails::assets()->setConsole($this);
                     \Rails::assets()->compileFile($parts[1]);
                     break;
                 default:
                     $this->terminate("Unknown action for assets");
                     break;
             }
             break;
         case 'routes':
             $routes = $this->createRoutes();
             $rules = ['routes' => '', 'f-s' => ''];
             $opts = new Zend\Console\Getopt($rules);
             if ($filename = $opts->getOption('f')) {
                 if (true === $filename) {
                     $logFile = \Rails::config()->paths->log->concat('routes.log');
                 } else {
                     $logFile = \Rails::root() . '/' . $filename;
                 }
                 file_put_contents($logFile, $routes);
             }
             $this->write($routes);
             break;
             /**
              * Install database.
              */
         /**
          * Install database.
          */
         case 'db:create':
             $m = new \Rails\ActiveRecord\Migration\Migrator();
             $m->loadSchema();
             break;
             /**
              * Run all/pending migrations.
              * Creates migrations table as well.
              */
         /**
          * Run all/pending migrations.
          * Creates migrations table as well.
          */
         case 'db:migrate':
             $m = new \Rails\ActiveRecord\Migration\Migrator();
             $m->run();
             break;
             /**
              * Runs seeds.
              */
         /**
          * Runs seeds.
          */
         case 'db:seed':
             $m = new \Rails\ActiveRecord\Migration\Migrator();
             $m->runSeeds();
             break;
         case 'db:schema:dump':
             $dumper = new \Rails\ActiveRecord\Schema\Dumper(\Rails\ActiveRecord\ActiveRecord::connection());
             $dumper->export(\Rails::root() . '/db/schema.sql');
             break;
     }
 }
예제 #4
0
 private function createHelperFile($base_name)
 {
     $name = $base_name . '_helper.php';
     $path = Rails::config()->paths->helpers;
     if (is_file($path . '/' . $name)) {
         return;
     }
     $class_name = Rails::services()->get('inflector')->camelize($base_name) . 'Helper';
     $contents = "<?php\nclass {$class_name} extends Rails\\ActionView\\Helper\n{\n    \n}";
     file_put_contents($path . '/' . $name, $contents);
 }
예제 #5
0
 public function isLocal()
 {
     return \Rails::config()->consider_all_requests_local ?: $this->remoteIp() == self::LOCALHOST;
 }
예제 #6
0
 public function dropDatabase($dbName)
 {
     if ($this->adapter->getDriver()->getConnection()->getDriverName() == 'Sqlite') {
         $dbFile = \Rails::config()['paths']['root']->expand($dbName);
         if (is_file($dbFile)) {
             unlink($dbFile);
         }
     } else {
         $ddl = new DropDatabase($dbName);
         $this->queryAdapter($ddl);
     }
 }