Your SlideShare is downloading. ×
0
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Drush - use full power - Alexander Schedrov

180

Published on

Drush - незаменимый инструмент для Drupal разработчика. Если вы досихпор не используете этот замечательный инструмент либо пользуетесь только малой частью команд - этот доклад будет очень полезен для …

Drush - незаменимый инструмент для Drupal разработчика. Если вы досихпор не используете этот замечательный инструмент либо пользуетесь только малой частью команд - этот доклад будет очень полезен для вас.

Published in: Internet, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
180
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 25 -27 April, 2014 http://camp2014.drupal.dn.ua Drush - use full power Alexander Schedrov
  • 2. You can do it in CLI
  • 3. Most helpful commands
  • 4. Most helpful commands: Core • cc - clear- cache • dl, en, dis, pm-uninstall • upwd • uli • make • updb • up • upc • image-flush • vget, vset • sql-dump • sql-cli • sql-sync
  • 5. Most helpful commands: Contrib Apache Solr • solr-index • solr-mark-all • solr-delete-index Registry Rebuild • registry- rebuild(rr) Localization Update • l10n-update • l10n-update- refresh • l10n-update- status
  • 6. Most helpful commands: Contrib Features • features-list(fl) • features-diff(fd) • features-revert(fr) • features-revert-all(fr) • features-update(fu) • features-update- all(fua) Devel • devel-reinstall (dre) • fn-view(fnv) • fn-hook(fnh, hook) drush hook HOOK_NAME allows to discover order of hooks
  • 7. DRUPAL SHELL
  • 8. Installation on Windows • download drush. Using c:drush as location in this example • install gzip, tar, wget command line binaries • set PATH environment variables c:drush;d:xamppphp;d:xamppmysqlbin;C:Program FilesGnuWin32bin • MsysGit https://drupal.org/node/594744
  • 9. Installation on *nix • download drush. Using home folder as location in this example • create symlink ! https://drupal.org/node/1791676 sudo ln -s ~/drush/drush /usr/local/bin/drush
  • 10. Configuration, code sync, sql sync.
  • 11. aliases.drushrc.php $aliases['dev'] = array( 'root' => '~/Sites/drupal.dev', ); ! ! drush @dev status drush -r ~/Sites/drupal.dev/ status ! drush ~/Sites/drupal.dev/#default status aliases.drush.php:
  • 12. $aliases['dev'] = array( 'root' => '~/Sites/blog', 'uri' => 'blog.dev', ); $aliases['live'] = array( 'root' => '~/Sites/blog-live', 'uri' => 'blog-live.dev', ); blog.aliases.drushrc.php: drush @blog status drush @blog.dev status drush @blog.live status $aliases['blog'] = array( 'site-list' => array('@dev', '@live'), ); drush site-alias(sa)
  • 13. SSH $aliases['live'] = array( 'remote-host' => 'bitbucket.org', 'remote-user' => 'sanchiz', 'root' => '/var/www', 'uri' => 'default', ); Important: remote server must have Drush ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub sanchiz@bitbucket.org equals drush dl drush_extras drush pushkey @live
  • 14. Remote host with special configuration $aliases['live'] = array( 'remote-host' => 'dev.project.de', 'remote-user' => 'dev_alex_sh', 'root' => '/home/dev_alex_sh/www', 'php' => '/usr/bin/php', 'path-aliases' => array( '%drush-script' => '/home/dev_alex_sh/drush/ drush.php', ), );
  • 15. Code and database sync If you do not use Git, this section for you =)
  • 16. Code sync $aliases['live'] = array( 'command-specific' => array( 'core-rsync' => array( 'exclude' => '*.sql', 'exclude' => '.svn', 'exclude' => '.git', 'exclude' => "sites/default/files/", ), ), ); drush rsync(core-rsync) @live @dev --include-conf ! drush rsync @live:sites/default/files @dev:sites/ default/files
  • 17. Sql-sync $aliases['live'] = array( 'path-aliases' => array( '%dump-dir' => ‘/home/dev_alex_sh/dump’, ), ); drush sql-sync @live @dev ! drush sql-sync @live @dev --create-db
  • 18. Selective sync emails => user+%uid@localhost passwords => password drush sql-sync @live @dev --structure-tables-key=common drushrc.php: $options['structure-tables']['custom'] = array( 'cache', 'cache_*', 'search_*', 'watchdog' ); drush sql-sync @live @dev --structure-tables-key=custom --no-cache=true ! drush sql-sync @live @dev --sanitize
  • 19. Sql-sync without Drush on server $aliases['live'] = array( 'databases' => array( 'default' => array( 'default' => array( 'driver' => 'mysql', 'username' => 'username', 'password' => 'password', 'port' => '', 'host' => '127.0.0.1', 'database' => 'live_database', ), ), ), ); drush @live sql-conf --all --show=passwords
  • 20. $aliases['live'] = array( 'remote-host' => 'dev.project.de', 'remote-user' => 'default_alex_sh', 'root' => '/home/default_alex_sh/www', 'php' => '/usr/bin/php', 'php-options' => '-d error_reporting="E_ALL^E_DEPRECATED"', 'variables' => array('mail_system' => array('default-system' => 'DevelMailLog')), 'databases' => array( 'default' => array( 'default' => array( 'driver' => 'mysql', 'username' => 'username', 'password' => 'password', 'port' => '', 'host' => '127.0.0.1', 'database' => 'live_database', ), ), ), 'path-aliases' => array( '%drush-script' => '/home/default_alex_sh/drush/drush.php', '%files' => '/home/default_alex_sh/www/sites/default/files', '%drush' => '/home/default_alex_sh/drush', '%dump-dir' => '/home/default_alex_sh/www/dump', ), ! 'command-specific' => array( 'core-rsync' => array( 'exclude' => '*.sql', 'exclude' => '.svn', 'exclude' => '.git', 'exclude' => "sites/default/files/", ), ), ! 'ssh-options' => '-p 2222', );
  • 21. Development
  • 22. DRUSH make What can drush make do? • Download modules • Clone modules from git • Apply patches • Download libraries • Download core
  • 23. core = 7.x api = 2 ! ; core projects[drupal][version] = 7.23 ! ; modules projects[views][version] = 3.7 projects[views][subdir] = "contrib" ! projects[views][version] = 3.7 projects[views][subdir] = "contrib" projects[views][patch][] = "https://drupal.org/files/ views_join_condition_increment_5.patch" ! projects[views][type] = module projects[views][download][type] = git projects[views][download][revision] = 6920ff71c0bf3a75fc769658ba0dabb42ffcd357 projects[views][download][branch] = 7.x-3.x projects[views][subdir] = "contrib" ! ; libraries libraries[ckeditor][download][type] = get libraries[ckeditor][download][url] = "http://download.cksource.com/CKEditor/CKEditor/ CKEditor 4.3/ckeditor_4.3_full.zip" ! libraries[colorbox][download][type] = get libraries[colorbox][download][url] = "https://github.com/jackmoore/colorbox/archive/ master.zip" drush make make_file.make --no-core
  • 24. http://drushmake.me
  • 25. Extensions Drush • A .drush folder in your HOME folder. • Anywhere in module • Drupal's /drush or /sites/all/drush folders.
  • 26. function usertools_drush_command() { $items = array(); ! $items['last-registration'] = array( 'description' => 'Show last registration.', 'arguments' => array( 'role' => 'Specific role.', ), 'options' => array( 'count' => array( 'description' => 'Count rows.', 'example-value' => '5', ), ), 'examples' => array( 'drush utl admin --count=5' => 'Show the last 5 registrations of admin.', ), 'aliases' => array('utl'), 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, ); ! return $items; } ! function usertools_drush_help($section) { switch ($section) { case 'drush:last-registration': return dt('This command will show you last registrations.'); } }
  • 27. function drush_usertools_last_registration_validate($role = 'all') { $count = drush_get_option('count'); if (!empty($count) && !is_numeric($count)) { return drush_set_error('Count should be numeric.'); } } ! function drush_usertools_last_registration($role = 'all') { $count = drush_get_option('count'); if (empty($count)) { $count = 10; } ! $query = db_select('users', 'u'); ! // Condition by role. if ($role != 'all') { $rid = drush_usertools_get_role_by_name($role); $query->innerJoin('users_roles', 'ur', 'u.uid = ur.uid'); $query->condition('ur.rid', $rid); } ! $query->fields('u', array('uid', 'name', 'mail', 'access', 'created')); $query->condition('u.uid', 0, '<>'); $query->range(0, $count); $query->orderBy('u.created', 'DESC'); $result = $query->execute(); ! $items[] = array('uid', dt('Name'), dt('email'), dt('Last login')); foreach ($result as $user) { $items[] = array( $user->uid, $user->name, $user->mail, $user->access == 0 ? dt('Never') : format_interval(time() - $user->access) . ' ago', ); } drush_print_table($items, TRUE); }
  • 28. Usage drush utl --count=5 drush utl administrator --count=10
  • 29. function usertools_drush_command() { $items = array(); $items['wipe-users'] = array( 'description' => 'Wipe user tables.', 'examples' => array( 'drush utw' => 'Wipe users.' ), 'aliases' => array('utw'), 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT, ); return $items; } ! function drush_usertools_wipe_users() { if (drush_confirm(dt('You want to delete all users? Are you sure?'))) { $query = db_select('users', 'u'); $query->fields('u', array('uid', 'name')); $query->condition('u.uid', 1, '>'); $result = $query->execute(); foreach ($result as $user) { drush_log(dt('Deleting user') . ' ' . $user->name . '...', 'warning'); user_delete($user->uid); drush_log(dt('Succes deleting') . ' ' . $user->name, 'success'); } } else { drush_user_abort(); } }
  • 30. Usage drush utw
  • 31. function drush_usertools_disable_role() { $query = db_select('role', 'r'); $query->fields('r', array('rid', ‘name')); $query->condition('r.rid', 1, '<>'); $query->orderBy('r.rid'); $result = $query->execute(); ! $options = array(); foreach ($result as $role) { $options[$role->rid] = array($role->name); } ! $rid = drush_choice($options, dt('Select role:')); ! // SQL queries. ! drush_log('All users of role ' . $options[$rid][0] . ' disabled.', 'success'); }
  • 32. Links • https://drupal.org/node/594744 - Drush on Windows • https://drupal.org/node/1791676 - Drush on *nix • http://drushmake.me - Drush make • http://drush.ws • https://gist.github.com/Sanchiz/7627657
  • 33. THANK YOU! ! Email: alexander.schedrov@gmail.com Twitter: @alexschedrov FB: schedrov http://sanchiz.net

×