diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a9448a94bc..06b9fa4207 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,6 +12,8 @@ en/ @ruby/www-ruby-lang-org-editorial es/ @ruby/www-ruby-lang-org-i18n-es +fa/ @ruby/www-ruby-lang-org-i18n-fa + fr/ @ruby/www-ruby-lang-org-i18n-fr id/ @ruby/www-ruby-lang-org-i18n-id diff --git a/_config.yml b/_config.yml index 167fa34951..4452425b8f 100644 --- a/_config.yml +++ b/_config.yml @@ -1,1827 +1,1938 @@ -markdown: kramdown -permalink: pretty -highlighter: rouge - -timezone: UTC - -kramdown: - auto_ids: false - syntax_highlighter_opts: - disable: true - -exclude: - - config.ru - - Gemfile - - Gemfile.lock - - Procfile - - Rakefile - - README.md - - unicorn.rb - - lib - - test - - vendor - -url: https://www.ruby-lang.org - -license: - url: /en/about/license.txt - -svn: - stable: - version: 2.6 - branch: ruby_2_6 - previous: - version: 2.5 - branch: ruby_2_5 - old: - version: 2.4 - branch: ruby_2_4 - -locales: - sitelinks: - bg: - - text: За сваляне - url: /bg/downloads - - text: Документация - url: /bg/documentation - - text: Библиотеки - url: /bg/libraries - - text: Общност - url: /bg/community - - text: Новини - url: /bg/news - - text: Сигурност - url: /bg/security - - text: Относно - url: /bg/about - de: - - text: Downloads - url: /de/downloads - - text: Dokumentation - url: /de/documentation - - text: Bibliotheken - url: /de/libraries - - text: Community - url: /de/community - - text: Neuigkeiten - url: /de/news - - text: Sicherheit - url: /de/security - - text: Über Ruby - url: /de/about - en: - - text: Downloads - url: /en/downloads - - text: Documentation - url: /en/documentation - - text: Libraries - url: /en/libraries - - text: Community - url: /en/community - - text: News - url: /en/news - - text: Security - url: /en/security - - text: About Ruby - url: /en/about - es: - - text: Descargas - url: /es/downloads - - text: Documentación - url: /es/documentation - - text: Bibliotecas - url: /es/libraries - - text: Comunidad - url: /es/community - - text: Noticias - url: /es/news - - text: Seguridad - url: /es/security - - text: Acerca de Ruby - url: /es/about - fr: - - text: Téléchargements - url: /fr/downloads - - text: Documentation - url: /fr/documentation - - text: Bibliothèques - url: /fr/libraries - - text: Communauté - url: /fr/community - - text: Actualités - url: /fr/news - - text: Sécurité - url: /fr/security - - text: À propos de Ruby - url: /fr/about - id: - - text: Unduh - url: /id/downloads - - text: Dokumentasi - url: /id/documentation - - text: Pustaka - url: /id/libraries - - text: Komunitas - url: /id/community - - text: Berita - url: /id/news - - text: Keamanan - url: /id/security - - text: Tentang Ruby - url: /id/about - it: - - text: Scarica - url: /it/downloads - - text: Documentazione - url: /it/documentation - - text: Librerie - url: /it/libraries - - text: Comunità - url: /it/community - - text: Notizie - url: /it/news - - text: Sicurezza - url: /it/security - - text: A proposito di Ruby - url: /it/about - ja: - - text: ダウンロード - url: /ja/downloads - - text: ドキュメント - url: /ja/documentation - - text: ライブラリ - url: /ja/libraries - - text: コミュニティ - url: /ja/community - - text: コア開発 - url: /ja/dev - - text: ニュース - url: /ja/news - - text: セキュリティ - url: /ja/security - - text: Rubyとは - url: /ja/about - ko: - - text: 다운로드 - url: /ko/downloads - - text: 문서 - url: /ko/documentation - - text: 라이브러리 - url: /ko/libraries - - text: 커뮤니티 - url: /ko/community - - text: 뉴스 - url: /ko/news - - text: 보안이슈 - url: /ko/security - - text: 루비에 대해서 - url: /ko/about - pl: - - text: Pobierz - url: /pl/downloads - - text: Dokumentacja - url: /pl/documentation - - text: Biblioteki - url: /pl/libraries - - text: Społeczność - url: /pl/community - - text: Wiadomości - url: /pl/news - - text: Bezpieczeństwo - url: /pl/security - - text: O języku Ruby - url: /pl/about - pt: - - text: Downloads - url: /pt/downloads - - text: Documentação - url: /pt/documentation - - text: Módulos - url: /pt/libraries - - text: Comunidade - url: /pt/community - - text: Notícias - url: /pt/news - - text: Segurança - url: /pt/security - - text: Sobre Ruby - url: /pt/about - ru: - - text: Скачать - url: /ru/downloads - - text: Документация - url: /ru/documentation - - text: Библиотеки - url: /ru/libraries - - text: Сообщество - url: /ru/community - - text: Новости - url: /ru/news - - text: Безопасность - url: /ru/security - - text: О Ruby - url: /ru/about - tr: - - text: İndirin - url: /tr/downloads - - text: Belgeler - url: /tr/documentation - - text: Kütüphaneler - url: /tr/libraries - - text: Topluluk - url: /tr/community - - text: Haberler - url: /tr/news -# - text: Güvenlik -# url: /tr/security - - text: Ruby Hakkında - url: /tr/about - vi: - - text: Downloads - url: /vi/downloads - - text: Tài liệu - url: /vi/documentation - - text: Thư viện - url: /vi/libraries - - text: Cộng đồng - url: /vi/community - - text: Tin tức - url: /vi/news - - text: Bảo mật - url: /vi/security - - text: Về Ruby - url: /vi/about - zh_cn: - - text: 下载 - url: /zh_cn/downloads - - text: 文档 - url: /zh_cn/documentation - - text: 代码库 - url: /zh_cn/libraries - - text: 社区 - url: /zh_cn/community - - text: 新闻 - url: /zh_cn/news - - text: 安全 - url: /zh_cn/security - - text: 关于 Ruby - url: /zh_cn/about - zh_tw: - - text: 下載安裝 - url: /zh_tw/downloads - - text: 文件 - url: /zh_tw/documentation - - text: 函式庫 - url: /zh_tw/libraries - - text: 社群 - url: /zh_tw/community - - text: 新聞 - url: /zh_tw/news - - text: 安全 - url: /zh_tw/security - - text: 關於 Ruby - url: /zh_tw/about - - search: - bg: - text: Търси - de: - text: Suche - cx_id: "008918821236166936739:xplclbf3sh0" - en: - text: Search - cx_id: "013598269713424429640:g5orptiw95w" - es: - text: Buscar - fr: - text: Recherche - cx_id: "016749562256550695330:efcmgh3a1ac" - id: - text: Cari - it: - text: Cerca - ja: - text: 検索 - cx_id: "008288045305770251182:fvruzsaknew" - ko: - text: 찾기 - pl: - text: Szukaj - pt: - text: Procurar - ru: - text: Поиск - tr: - text: Ara - cx_id: "011743037637077038592:5tuc9cqilws" - vi: - text: Tìm - zh_cn: - text: 搜索 - zh_tw: - text: 搜尋 - - slogan: - bg: "най-добрият приятел на програмиста" - de: "Der beste Freund eines Programmierers" - en: "A Programmer's Best Friend" - es: "El mejor amigo de un desarrollador" - fr: "A Programmer's Best Friend" - id: "Sahabat Terbaik Programmer" - it: "Il migliore amico dei programmatori" - ja: "A Programmer's Best Friend" - ko: "프로그래머의 단짝 친구" - pl: "Najlepszy Przyjaciel Programisty" - pt: "O melhor amigo do programador" - ru: "лучший друг программиста" - tr: "BİR PROGRAMCININ EN İYİ ARKADAŞI" - vi: "Người bạn tri kỉ của lập trình viên" - zh_cn: "程序员最好的朋友" - zh_tw: "程式設計師的摯友" - - ruby: - bg: "Ruby" - de: "Ruby" - en: "Ruby" - es: "Ruby" - fr: "Ruby" - id: "Ruby" - it: "Ruby" - ja: "Ruby" - ko: "루비" - pl: "Ruby" - pt: "Ruby" - ru: "Ruby" - tr: "Ruby" - vi: "Ruby" - zh_cn: "Ruby" - zh_tw: "Ruby" - - month_names: - bg: [януари, февруари, март, април, май, юни, юли, август, септември, октомври, ноември, декември] - de: [Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] - en: [January, February, March, April, May, June, July, August, September, October, November, December] - es: [Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] - fr: [Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre] - id: [Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] - it: [Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] - pl: [Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień] - pt: [Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] - ru: [Январь, Февраль, Март, Апрель, Май, Июнь, Июль, Август, Сентябрь, Октябрь, Ноябрь, Декабрь] - tr: [Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık] - vi: [Tháng một, Tháng hai, Tháng ba, Tháng tư, Tháng năm, Tháng sáu, Tháng bảy, Tháng tám, Tháng chín, Tháng mười, Tháng mười một, Tháng mười hai] - - posted_by: - bg: "Публикувана от AUTHOR на %Y-%m-%d" - de: "Geschrieben von AUTHOR am %-d.%-m.%Y" - en: "Posted by AUTHOR on %-d %b %Y" - es: "Publicado por AUTHOR el %Y-%m-%d" - fr: "Posté par AUTHOR le %Y-%m-%d" - id: "Ditulis oleh AUTHOR tanggal %Y-%m-%d" - it: "Inserito da AUTHOR il %Y-%m-%d" -# ja: - ko: "작성자: AUTHOR (%Y-%m-%d)" - pl: "Zamieszczone przez AUTHOR %Y-%m-%d" - pt: "Escrito por AUTHOR em %d/%m/%Y" - ru: "Опубликовал AUTHOR %Y-%m-%d" - tr: "AUTHOR tarafından %d.%m.%Y tarihinde gönderildi" - vi: "Đăng bởi AUTHOR vào %-d %b %Y" - zh_cn: "由 AUTHOR 发表于 %Y-%m-%d" - zh_tw: "由 AUTHOR 發表於 %Y-%m-%d" - - translated_by: - bg: "Превод от" - de: "Übersetzt von" - en: "Translated by" - es: "Traducción de" - fr: "Traduit par" - id: "Diterjemahkan oleh" - it: "Tradotto da" -# ja: - ko: "번역자:" - pl: "Tłumaczone przez" - pt: "Traduzido por" - ru: "Перевел:" - tr: "Çeviri:" - vi: "Dịch bởi" - zh_cn: "翻译:" - zh_tw: "翻譯:" - - feed: - bg: - title: Ruby новини - description: Последните новини от ruby-lang.org. - lang_code: bg - de: - title: Ruby RSS News - description: Die letzten Neuigkeiten von ruby-lang.org. - lang_code: de-DE - en: - title: Ruby News - description: The latest news from ruby-lang.org. - lang_code: en-US - es: - title: Noticias de Ruby por RSS - description: Las últimas noticias de ruby-lang.org en español. - lang_code: es-ES - fr: - title: Actualités de Ruby-lang - description: Les dernières news sur ruby-lang.org. - lang_code: fr-FR - id: - title: Berita Ruby - description: Berita terhangat dari ruby-lang.org. - lang_code: id - it: - title: Notizie su Ruby - description: Le ultime notizie da ruby-lang.org. - lang_code: it-IT - ja: - title: ruby-langの最新ニュース - description: ruby-lang.orgの最新ニュース - lang_code: ja - ko: - title: 루비 뉴스 - description: ruby-lang.org의 최근 소식 - lang_code: ko-KR - pl: - title: Ruby Lang PL - description: Najnowsze wiadomości z ruby-lang.org. - lang_code: pl - pt: - title: Notícias sobre Ruby - description: As notícias mais recentes do ruby-lang.org em português. - lang_code: pt-PT - ru: - title: Новости Ruby - description: Последние новости с ruby-lang.org. - lang_code: ru-RU - tr: - title: Ruby Son Haberler - description: ruby-lang.org'dan en son haberler. - lang_code: tr - vi: - title: Tin tức Ruby - description: Những tin mới nhất từ ruby-lang.org. - lang_code: vi - zh_cn: - title: Ruby 新闻更新 - description: 来自 ruby-lang.org 的最新文章。 - lang_code: zh-CN - zh_tw: - title: Ruby 新聞 - description: 來自 ruby-lang.org 的新聞快報。 - lang_code: zh-TW - - news: - bg: - other_news: Други новини - more_news: Още новини... - continue: Прочетете още... - back_to_year: "Обратно към архив %Y" - recent_news: Последни новини - yearly_archive_title: "Архив %Y" - monthly_archive_title: "Архив %B %Y" - yearly_archives: Архив по година - monthly_archives: Архив по месец - yearly_archive_link: "%Y" - monthly_archive_link: "%B %Y" - de: - other_news: Weitere Neuigkeiten - more_news: Mehr Neuigkeiten... - continue: Weiterlesen... - back_to_year: "Zurück zum Archiv für %Y" - recent_news: Aktuelle Neuigkeiten - yearly_archive_title: "Archiv für %Y" - monthly_archive_title: "Archiv für %B %Y" - yearly_archives: Archiv - monthly_archives: Archiv nach Monat - yearly_archive_link: "Archiv für %Y" - monthly_archive_link: "%B %Y" - en: - other_news: Other News - more_news: More News... - continue: Continue Reading... - back_to_year: "Back to %Y Archives" - recent_news: Recent News - yearly_archive_title: "%Y Archives" - monthly_archive_title: "%B %Y Archives" - yearly_archives: Archives by Year - monthly_archives: Archives by Month - yearly_archive_link: "%Y Archives" - monthly_archive_link: "%B %Y" - es: - other_news: Otras noticias - more_news: Más noticias... - continue: Continuar leyendo... - back_to_year: "Volver a las noticias de %Y" - recent_news: Noticias recientes - yearly_archive_title: "Noticias de %Y" - monthly_archive_title: "Noticias de %B %Y" - yearly_archives: Noticias por año - monthly_archives: Noticias por mes - yearly_archive_link: "Noticias de %Y" - monthly_archive_link: "%B %Y" - fr: - other_news: Autres actualités - more_news: Plus d’actualités... - continue: Lire la suite... - back_to_year: "Retour aux %Y archives" - recent_news: Actualité récente - yearly_archive_title: "%Y Archives" - monthly_archive_title: "%B %Y Archives" - yearly_archives: Archives par années - monthly_archives: Archives par mois - yearly_archive_link: "Actualités de %Y" - monthly_archive_link: "%m/%Y" - id: - other_news: Berita Lain - more_news: Arsip Sebelumnya... - continue: Baca Selengkapnya... - back_to_year: "Kembali ke Arsip Tahun %Y" - recent_news: Berita Baru - yearly_archive_title: "Arsip Tahun %Y" - monthly_archive_title: "Arsip %B %Y" - yearly_archives: Arsip Tahunan - monthly_archives: Arsip Bulanan - yearly_archive_link: "Tahun %Y" - monthly_archive_link: "%B %Y" - it: - other_news: Altre Notizie - more_news: Ulteriori Notizie... - continue: Continua... - back_to_year: "Vai all'archivio %Y" - recent_news: Notizie Recenti - yearly_archive_title: "Archivio dell'anno %Y" - monthly_archive_title: "Archivio mensile %B %Y" - yearly_archives: Archivio dell'anno - monthly_archives: Archivio Mensile - yearly_archive_link: "Archivio dell'anno %Y" - monthly_archive_link: "%B %Y" - ja: - other_news: その他のニュース - more_news: もっと読む... - continue: もっと読む... - back_to_year: "%Y年のアーカイブに戻る" - recent_news: 最近のニュース - yearly_archive_title: "%Y年のアーカイブ" - monthly_archive_title: "%Y年%m月のアーカイブ" - yearly_archives: 年毎のアーカイブ - monthly_archives: 月毎のアーカイブ - yearly_archive_link: "%Y年のアーカイブ" - monthly_archive_link: "%Y年%m月" - ko: - other_news: 이전 뉴스 - more_news: 뉴스 더보기... - continue: 자세히 읽기 - back_to_year: "%Y년 아카이브로 돌아가기" - recent_news: 최근 소식 - yearly_archive_title: "%Y년 아카이브" - monthly_archive_title: "%Y년 %m월 아카이브" - yearly_archives: 년도별 아카이브 - monthly_archives: 월별 아카이브 - yearly_archive_link: "%Y년" - monthly_archive_link: "%Y년 %m월" - pl: - other_news: Pozostałe aktualności - more_news: Więcej aktualności... - continue: Więcej... - back_to_year: "Powrót do Archiwum %Y" - recent_news: Aktualności - yearly_archive_title: "Archiwum %Y" - monthly_archive_title: "Archiwum %B %Y" - yearly_archives: Archiwum wiadomości - monthly_archives: Archiwum według miesiąca - yearly_archive_link: "%Y" - monthly_archive_link: "%B %Y" - pt: - other_news: Outras Notícias - more_news: Mais Notícias... - continue: Continuar a Leitura... - back_to_year: "Voltar aos arquivos de %Y" - recent_news: Notícias Recentes - yearly_archive_title: "Arquivos de %Y" - monthly_archive_title: "Arquivos de %B %Y" - yearly_archives: Arquivos por Ano - monthly_archives: Arquivos por Mês - yearly_archive_link: "Arquivos de %Y" - monthly_archive_link: "%B %Y" - ru: - other_news: Другие новости - more_news: Больше новостей... - continue: Узнать больше... - back_to_year: "Вернуться к архивам %Y года" - recent_news: Последние новости - yearly_archive_title: "Архивы %Y года" - monthly_archive_title: "Архивы %B %Y" - yearly_archives: Архивы по годам - monthly_archives: Архивы по месяцам - yearly_archive_link: "Архивы %Y" - monthly_archive_link: "%B %Y" - tr: - other_news: Diğer Haberler - more_news: Dahası... - continue: Devamını Okuyun... - back_to_year: "%Y arşivlerine geri dönün." - recent_news: Son Haberler - yearly_archive_title: "%Y Arşivleri" - monthly_archive_title: "%B %Y Arşivleri" - yearly_archives: Yıllara göre Arşivler - monthly_archives: Aylara göre Arşivler - yearly_archive_link: "%Y Arşivleri" - monthly_archive_link: "%B %Y" - vi: - other_news: Tin khác - more_news: Thêm Tin... - continue: Đọc tiếp... - back_to_year: "Trở về %Y Lưu trữ" - recent_news: Tin mới nhất - yearly_archive_title: "Lưu trữ %Y" - monthly_archive_title: "Lưu trữ %B %Y" - yearly_archives: Lưu trữ bằng Năm - monthly_archives: Lưu trữ bằng Tháng - yearly_archive_link: "Lưu trữ %Y" - monthly_archive_link: "%B %Y" - zh_cn: - other_news: 其它新闻 - more_news: 更多新闻... - continue: 阅读全文... - back_to_year: "返回%Y年归档" - recent_news: 最新消息 - yearly_archive_title: "%Y年归档" - monthly_archive_title: "%Y年%-m月归档" - yearly_archives: 按年存档 - monthly_archives: 按月归档 - yearly_archive_link: "%Y年归档" - monthly_archive_link: "%Y年%-m月归档" - zh_tw: - other_news: 其他新聞 - more_news: 更多新聞... - continue: 深入閱讀... - back_to_year: "回到 %Y 年彙整" - recent_news: 最新消息 - yearly_archive_title: "%Y 彙整" - monthly_archive_title: "%Y 年 %-m 月彙整" - yearly_archives: 按年份彙整 - monthly_archives: 按月份彙整 - yearly_archive_link: "%Y 年彙整" - monthly_archive_link: "%Y 年 %-m 月彙整" - - sidebar: - try_ruby: &try_ruby - url: https://ruby.github.io/TryRuby/ - rubybib: &rubybib - url: https://rubybib.org/ - - bg: - get_started: - text: Започнете лесно е! - try_ruby: - text: Пробвайте Ruby! (в браузъра) - <<: *try_ruby - quickstart: - text: Ruby в 20 минути - url: /bg/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby от други езици - url: /bg/documentation/ruby-from-other-languages/ - explore: - text: Изследвайте нов свят… - documentation: - text: Документация - url: /bg/documentation/ - # books: - # text: Книги - libraries: - text: Библиотеки - url: /bg/libraries/ - success_stories: - text: Успешни истории - url: /bg/documentation/success-stories/ - participate: - text: Участвайте в приятелски настроено общество. - mailing_lists: - text: Пощенски списъци - url: /bg/community/mailing-lists/ - description: | - Дискусии относно Ruby с програмисти от цял свят. - user_groups: - text: Потребителски групи - url: /bg/community/user-groups/ - description: | - Свържете се с рубисти в твоя район. - weblogs: - text: Блогове - url: /bg/community/weblogs/ - description: | - Прочетете какво се случва в Ruby обществото. - ruby_core: - text: Ruby ядро - url: /bg/community/ruby-core/ - description: | - Помогнете за разработката на Ruby. - issue_tracking: - text: Следене на бъгове - url: https://bugs.ruby-lang.org/ - description: | - Докладвайте или помогнете за решаването на проблеми в Ruby. - syndicate: - text: Новини - recent_news: - text: Последните новини (RSS) - url: /bg/feeds/news.rss - de: - get_started: - text: Der Einstieg ist einfach! - try_ruby: - text: Teste Ruby! (im Browser) - <<: *try_ruby - quickstart: - text: Ruby in 20 Minuten - url: /de/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby für Umsteiger - url: /de/documentation/ruby-from-other-languages/ - explore: - text: Entdecke eine neue Welt… - documentation: - text: Dokumentation - url: /de/documentation/ - # books: - # text: Bücher - libraries: - text: Bibliotheken - url: /de/libraries/ - success_stories: - text: Erfolgsgeschichten - url: /de/documentation/success-stories/ - participate: - text: Beteilige dich an einer freundlichen und wachsenden Community. - mailing_lists: - text: Mailing-Listen - url: /de/community/mailing-lists/ - description: | - Sprich mit Programmierern auf der ganzen Welt über Ruby. - user_groups: - text: User-Groups - url: /de/community/user-groups/ - description: | - Treffe Rubyisten in deiner Umgebung. - weblogs: - text: Weblogs - url: /de/community/weblogs/ - description: | - Lies, was gerade jetzt in der Ruby-Community passiert. - ruby_core: - text: Ruby-Entwicklung - url: /de/community/ruby-core/ - description: | - Hilf mit, die neuesten Ruby-Versionen zu verbessern. - issue_tracking: - text: Fehler melden - url: https://bugs.ruby-lang.org/ - description: | - Melde einen Fehler oder hilf mit, offene Fehler zu beseitigen. - syndicate: - text: Syndication - recent_news: - text: Aktuelle Neuigkeiten (RSS) - url: /de/feeds/news.rss - en: - get_started: - text: Get Started, it's easy! - try_ruby: - text: Try Ruby! (in your browser) - <<: *try_ruby - quickstart: - text: Ruby in Twenty Minutes - url: /en/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby from Other Languages - url: /en/documentation/ruby-from-other-languages/ - explore: - text: Explore a new world… - documentation: - text: Documentation - url: /en/documentation/ - # books: - # text: Books - rubybib: - text: Academic Research - <<: *rubybib - libraries: - text: Libraries - url: /en/libraries/ - success_stories: - text: Success Stories - url: /en/documentation/success-stories/ - participate: - text: Participate in a friendly and growing community. - mailing_lists: - text: Mailing Lists - url: /en/community/mailing-lists/ - description: | - Talk about Ruby with programmers from all around the world. - user_groups: - text: User Groups - url: /en/community/user-groups/ - description: | - Get in contact with Rubyists in your area. - weblogs: - text: Blogs - url: /en/community/weblogs/ - description: | - Read about what’s happening right now in the Ruby community. - ruby_core: - text: Ruby Core - url: /en/community/ruby-core/ - description: | - Help polish the rough edges of the latest Ruby. - issue_tracking: - text: Issue Tracking - url: https://bugs.ruby-lang.org/ - description: | - Report or help solve issues in Ruby. - syndicate: - text: Syndicate - recent_news: - text: Recent News (RSS) - url: /en/feeds/news.rss - es: - get_started: - text: "Iníciate, ¡es fácil!" - try_ruby: - text: ¡Prueba Ruby! (en tu navegador) - <<: *try_ruby - quickstart: - text: Ruby en 20 Minutos - url: /es/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby desde otros lenguajes - url: /es/documentation/ruby-from-other-languages/ - explore: - text: Explora un nuevo mundo… - documentation: - text: Documentación - url: /es/documentation/ - # books: - # text: Libros - libraries: - text: Bibliotecas - url: /es/libraries/ - success_stories: - text: Casos exitosos (en inglés) - url: /en/documentation/success-stories/ - participate: - text: Participa en una amistosa y creciente comunidad. - mailing_lists: - text: Listas de correo - url: /es/community/mailing-lists/ - description: | - Habla sobre Ruby con desarrolladores alrededor del mundo. - user_groups: - text: Grupos de usuarios - url: /es/community/user-groups/ - description: | - Ponte en contacto con otros Rubyistas en tu localidad. - weblogs: - text: Blogs (en inglés) - url: /en/community/weblogs/ - description: | - Entérate de lo que está sucediendo en la comunidad. - ruby_core: - text: Ruby Core (en inglés) - url: /en/community/ruby-core/ - description: | - Ayuda a mejorar el futuro de Ruby. - issue_tracking: - text: Reportes de errores - url: https://bugs.ruby-lang.org/ - description: | - Reporta o ayuda a resolver problemas en Ruby. - syndicate: - text: Feeds de noticias (RSS) - recent_news: - text: En español - url: /es/feeds/news.rss - fr: - get_started: - text: Lancez-vous, c’est facile ! - try_ruby: - text: Essayez Ruby ! - <<: *try_ruby - quickstart: - text: Apprenez Ruby en vingt minutes - url: /fr/documentation/quickstart/ - ruby_from_other_languages: - text: Vous venez d'un autre langage ? - url: /fr/documentation/ruby-from-other-languages/ - explore: - text: Explorez un nouvel univers… - documentation: - text: Documentation - url: /fr/documentation/ - # books: - # text: Livres - libraries: - text: Bibliothèques - url: /fr/libraries/ - success_stories: - text: Témoignages - url: /fr/documentation/success-stories/ - participate: - text: Participez à la communauté - mailing_lists: - text: Listes de diffusion - url: /fr/community/mailing-lists/ - description: | - discutez de Ruby avec des programmeurs du monde entier. - user_groups: - text: Groupes d’utilisateur - url: /fr/community/user-groups/ - description: | - entrez en contact avec d’autres rubyistes de votre région. - weblogs: - text: Blogs - url: /fr/community/weblogs/ - description: | - suivez toute l’actualité de la communauté Ruby. - ruby_core: - text: Ruby Core - url: /fr/community/ruby-core/ - description: | - apportez votre aide à l'élaboration du prochain Ruby. - issue_tracking: - text: Rapports de bugs - url: https://bugs.ruby-lang.org/ - description: | - aidez à corriger et améliorer Ruby. - syndicate: - text: Syndication - recent_news: - text: Actualité récente (RSS) - url: /fr/feeds/news.rss - id: - get_started: - text: Coba Sekarang, sangat mudah! - try_ruby: - text: Try Ruby! (langsung di browser Anda) - <<: *try_ruby - quickstart: - text: Menguasai Ruby dalam 20 Menit - url: /id/documentation/quickstart/ - ruby_from_other_languages: - text: Dari Bahasa Pemrograman Lain ke Ruby - url: /id/documentation/ruby-from-other-languages/ - explore: - text: Jelajahi sebuah dunia baru… - documentation: - text: Dokumentasi - url: /id/documentation/ - # books: - # text: Buku-buku - libraries: - text: Pustaka - url: /id/libraries/ - success_stories: - text: Kisah Sukses - url: /id/documentation/success-stories/ - participate: - text: | - Bergabunglah dalam komunitas yang ramah dan makin - berkembang. - mailing_lists: - text: Mailing List - url: /id/community/mailing-lists/ - description: | - Berdiskusi dengan programmer Ruby dari Indonesia dan seluruh dunia. - user_groups: - text: Komunitas Pengguna - url: /id/community/user-groups/ - description: | - Berpartisipasilah dengan Rubyist di lokasi Anda. - weblogs: - text: Blog - url: /id/community/weblogs/ - description: | - Ulasan terbaru dari komunitas Ruby. - ruby_core: - text: Ruby Core - url: /id/community/ruby-core/ - description: | - Silakan berkontribusi untuk versi Ruby terbaru. - issue_tracking: - text: Laporkan Masalah - url: https://bugs.ruby-lang.org/ - description: | - Lapor atau bantu memecahkan masalah yang ada di Ruby. - syndicate: - text: Sindikasi Web - recent_news: - text: Umpan Web (RSS) - url: /id/feeds/news.rss - it: - get_started: - text: Per iniziare, è facile! - try_ruby: - text: Prova Ruby! (nel tuo browser) - <<: *try_ruby - quickstart: - text: Ruby in venti minuti - url: /it/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby a partire da altri linguaggi - url: /it/documentation/ruby-from-other-languages/ - explore: - text: Esplora un nuovo mondo… - documentation: - text: Documentazione - url: /it/documentation/ - # books: - # text: Libri - libraries: - text: Librerie - url: /it/libraries/ - success_stories: - text: Esperienze Positive - url: /it/documentation/success-stories/ - participate: - text: | - Partecipa ad una comunità amichevole e in crescita. - mailing_lists: - text: Liste di Discussione - url: /it/community/mailing-lists/ - description: | - Parla con altri programmatori Ruby da tutto il mondo. - user_groups: - text: Gruppi di Utenti - url: /it/community/user-groups/ - description: | - Entra in contatto con "Rubysti" nella tua zona. - weblogs: - text: Blog - url: /it/community/weblogs/ - description: | - Leggi cosa sta succedendo proprio adesso nella comunità di Ruby. - ruby_core: - text: Ruby Core - url: /it/community/ruby-core/ - description: | - Aiutaci a perfezionare l'ultimo Ruby. - issue_tracking: - text: Issue Tracking - url: https://bugs.ruby-lang.org/ - description: | - Segnalaci o aiutaci a risolvere problemi in Ruby - syndicate: - text: Feed RSS - recent_news: - text: Ultime Notizie (RSS) - url: /it/feeds/news.rss - ja: - get_started: - text: はじめよう! - try_ruby: - text: 試してみる! (ブラウザから) - <<: *try_ruby - quickstart: - text: 20分ではじめるRuby - url: /ja/documentation/quickstart/ - ruby_from_other_languages: - text: 他言語からのRuby入門 - url: /ja/documentation/ruby-from-other-languages/ - explore: - text: 探求しよう - documentation: - text: ドキュメント - url: /ja/documentation/ - # books: - # text: Books - rubybib: - text: 学術研究(英語) - <<: *rubybib - libraries: - text: ライブラリ - url: /ja/libraries/ -# success_stories: -# text: Success Stories -# url: /ja/documentation/success-stories/ - participate: - text: コミュニティに参加しよう - mailing_lists: - text: メーリングリスト - url: /ja/community/mailing-lists/ - description: | - 世界中のプログラマとRubyについて話しましょう。 - user_groups: - text: 日本Rubyの会 - url: http://ruby-no-kai.org/ - description: | - Rubyの利用者/開発者の支援を目的としたグループです。 - weblogs: - text: 更新順リンク - url: http://www.rubyist.net/~kazu/samidare/ - description: | - Ruby関連のサイトのリンクを更新順に並べたものです。 -# ruby_core: -# text: Ruby Core -# url: /en/community/ruby-core/ -# description: | -# Help polish the rough edges of the latest Ruby. -# issue_tracking: -# text: Issue Tracking -# url: https://bugs.ruby-lang.org/ -# description: | -# Report or help solve issues in Ruby. - syndicate: - text: Syndicate - recent_news: - text: 最近のニュース (RSS) - url: /ja/feeds/news.rss - ko: - get_started: - text: 시작하기 - try_ruby: - text: Try Ruby! - <<: *try_ruby - quickstart: - text: 20분 가이드 - url: /ko/documentation/quickstart/ - ruby_from_other_languages: - text: 다른 언어에서 루비로 - url: /ko/documentation/ruby-from-other-languages/ - explore: - text: 탐험하기 - documentation: - text: 문서 - url: /ko/documentation/ - # books: - # text: 책 - libraries: - text: 라이브러리 - url: /ko/libraries/ - success_stories: - text: 사용 사례 - url: /ko/documentation/success-stories/ - participate: - text: 커뮤니티에 참여하기 - mailing_lists: - text: 루비 사용자 포럼 - url: http://groups.google.com/group/rubykr - description: | - 한국의 루비스트를 만나세요 - user_groups: - text: 유저 그룹 - url: /ko/community/user-groups/ - description: | - 근처의 루비스트와 연락하기 - weblogs: - text: 웹로그 - url: /ko/community/weblogs/ - description: | - 루비 커뮤니티에서 지금 무슨 일이 일어나는지 읽기 - ruby_core: - text: 루비 코어 - url: /ko/community/ruby-core/ - description: | - 최신판 루비의 연마를 돕기 - issue_tracking: - text: 이슈 관리 - url: https://bugs.ruby-lang.org/ - description: | - 루비에 관한 이슈를 제보하거나 해결을 돕기 - syndicate: - text: 구독 - recent_news: - text: 최근 소식(RSS) - url: /ko/feeds/news.rss - pl: - get_started: - text: Zacznij, to proste! - try_ruby: - text: Wypróbuj Ruby! (w twojej przeglądarce) - <<: *try_ruby - quickstart: - text: Ruby w 20 Minut - url: /pl/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby a inne języki programowania - url: /pl/documentation/ruby-from-other-languages/ - explore: - text: Poznaj nowy świat… - documentation: - text: Dokumentacja - url: /pl/documentation/ - # books: - # text: Książki - libraries: - text: Biblioteki - url: /pl/libraries/ - success_stories: - text: Udane wdrożenia - url: /pl/documentation/success-stories/ - participate: - text: | - Dołącz do przyjaznej i rozrastającej się - społeczności. - mailing_lists: - text: Listy dyskusyjne - url: /pl/community/mailing-lists/ - description: | - Porozmawiaj o Ruby z programistami z całego świata. - user_groups: - text: Grupy Użytkowników - url: /pl/community/user-groups/ - description: | - Bądź w kontakcie z użytkownikami Rubiego z Twojej okolicy. - weblogs: - text: Blogi - url: /pl/community/weblogs/ - description: | - Czytaj na bieżąco co dzieje się w społeczności języka Ruby. - ruby_core: - text: Ruby Core - url: /en/community/ruby-core/ - description: | - Pomóż dopracować najnowszą wersję Rubiego. - issue_tracking: - text: Śledzenie problemów - url: https://bugs.ruby-lang.org/ - description: | - Zgłoś lub pomóż rozwiązać problemy w Rubim. - syndicate: - text: Syndicate - recent_news: - text: Ostatnie Wiadomości (RSS) - url: /pl/feeds/news.rss - pt: - get_started: - text: Primeiros passos, é fácil! - try_ruby: - text: Try Ruby! (in your browser) - <<: *try_ruby - quickstart: - text: Ruby em Vinte Minutos - url: /pt/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby a partir de outras linguagens - url: /pt/documentation/ruby-from-other-languages/ - explore: - text: Explore um novo mundo… - documentation: - text: Documentação - url: /pt/documentation/ - # books: - # text: Livros - libraries: - text: Bibliotecas - url: /pt/libraries/ - success_stories: - text: Histórias de sucesso - url: /pt/documentation/success-stories/ - participate: - text: | - Participe de uma comunidade simpática e em crescimento. - mailing_lists: - text: Listas de E-mail - url: /pt/community/mailing-lists/ - description: | - Fale sobre Ruby com programadores de todo o mundo. - user_groups: - text: Grupos de Usuários - url: /pt/community/user-groups/ - description: | - Entre em contato com colegas da sua área. - weblogs: - text: Weblogs - url: /pt/community/weblogs/ - description: | - Leia sobre o que está acontecendo agora na comunidade Ruby. - ruby_core: - text: Ruby Core - url: /pt/community/ruby-core/ - description: | - Ajude a polir as arestas da última versão do Ruby. - issue_tracking: - text: Issue Tracking - url: https://bugs.ruby-lang.org/ - description: | - Informe ou ajude a resolver problemas do Ruby. - syndicate: - text: Feeds de notícias (RSS) - recent_news: - text: Em português - url: /pt/feeds/news.rss - ru: - get_started: - text: Начните сейчас, это легко! - try_ruby: - text: Попробуйте Ruby! (в своем браузере) - <<: *try_ruby - quickstart: - text: Ruby за двадцать минут - url: /ru/documentation/quickstart/ - ruby_from_other_languages: - text: В Ruby из других языков - url: /ru/documentation/ruby-from-other-languages/ - explore: - text: Исследуйте новый мир… - documentation: - text: Документация - url: /ru/documentation/ - # books: - # text: Книги - libraries: - text: Библиотеки - url: /ru/libraries/ - success_stories: - text: Истории успеха - url: /ru/documentation/success-stories/ - participate: - text: Вступайте в дружелюбное и развивающееся сообщество. - mailing_lists: - text: Почтовые рассылки - url: /ru/community/mailing-lists/ - description: | - Разговоры о Ruby в кругу программистов со всего мира. - user_groups: - text: Группы пользователей - url: /ru/community/user-groups/ - description: | - Познакомьтесь с рубистами рядом с вами. - weblogs: - text: Блоги - url: /ru/community/weblogs/ - description: | - Читайте о том, что происходит в сообществе Ruby прямо сейчас. - ruby_core: - text: Ядро Ruby - url: /ru/community/ruby-core/ - description: | - Помощь в полировке последней версии Ruby. - issue_tracking: - text: Решение проблем - url: https://bugs.ruby-lang.org/ - description: | - Сообщайте или помогите решить проблемы в Ruby. - syndicate: - text: Синдикат - recent_news: - text: Последние новости (RSS) - url: /ru/feeds/news.rss - tr: - get_started: - text: Başlamak, çok kolay! - try_ruby: - text: Ruby'yi Deneyin! (tarayıcınızda) - <<: *try_ruby - quickstart: - text: Yirmi Dakikada Ruby - url: /tr/documentation/quickstart/ - ruby_from_other_languages: - text: Diğer Dillerden Ruby'ye - url: /tr/documentation/ruby-from-other-languages/ - explore: - text: Yeni Bir Dünya keşfedin… - documentation: - text: Belgeler - url: /tr/documentation/ - # books: - # text: Kitaplar - rubybib: - text: Akademik Araştırma - <<: *rubybib - libraries: - text: Kütüphaneler - url: /tr/libraries/ - success_stories: - text: Başarı Hikayeleri - url: /tr/documentation/success-stories/ - participate: - text: Arkadaşça ve büyüyen bir topluluğa katılın. -# mailing_lists: -# text: Mail Listeleri -# url: /tr/community/mailing-lists/ -# description: | -# Tüm dünyadan Ruby programcılarıyla görüşün. -# user_groups: -# text: Kullanıcı Grupları -# url: /tr/community/user-groups/ -# description: | -# Bölgenizdeki Ruby'cilerle temas kurun. -# weblogs: -# text: Web günlükleri -# url: /tr/community/weblogs/ -# description: | -# Rubyde neler olduğunu takip edin. -# ruby_core: -# text: Ruby Core -# url: /tr/community/ruby-core/ -# description: | -# En son Rubynin kaba taraflarının parlatılmasına yardımcı olun. - issue_tracking: - text: Sorun Takibi - url: https://bugs.ruby-lang.org/ - description: | - Ruby sorunlarını rapor edin ya da çözümüne yardım edin. - syndicate: - text: Takip Edin - recent_news: - text: Son Haberler (RSS) - url: /tr/feeds/news.rss - vi: - get_started: - text: Nhập môn, quá dễ! - try_ruby: - text: Thử Ruby! (trong trình duyệt) - <<: *try_ruby - quickstart: - text: Ruby trong 20 phút - url: /vi/documentation/quickstart/ - ruby_from_other_languages: - text: Ruby từ những ngôn ngữ khác - url: /vi/documentation/ruby-from-other-languages/ - explore: - text: Khám phá một thề giới mới… - documentation: - text: Tài liệu - url: /vi/documentation/ - # books: - # text: Sách - libraries: - text: Thư viện - url: /vi/libraries/ - success_stories: - text: Những câu chuyện thành công - url: /vi/documentation/success-stories/ - participate: - text: Tham gia vào một cộng đồng lớn mạnh và thân thiện. - mailing_lists: - text: Mailing Lists - url: /vi/community/mailing-lists/ - description: | - Trao đổi về Ruby với các lập trình viên trên thế giới - user_groups: - text: Nhóm người dùng - url: /vi/community/user-groups/ - description: | - Làm quen với những Rubyist trong khu vực của bạn. - weblogs: - text: Weblogs - url: /vi/community/weblogs/ - description: | - Đọc về những gì đang xảy ra với cộng đồng Ruby. - ruby_core: - text: Lõi Ruby - url: /vi/community/ruby-core/ - description: | - Giúp hoàn thiện Ruby. - issue_tracking: - text: Thông báo lỗi - url: https://bugs.ruby-lang.org/ - description: | - Báo hoặc giúp xử lý các lỗi trong Ruby. - syndicate: - text: Syndicate - recent_news: - text: Tin mới (RSS) - url: /vi/feeds/news.rss - zh_tw: - get_started: - text: 上手入門,一點都不難! - try_ruby: - text: 在瀏覽器中試用 Ruby! - <<: *try_ruby - quickstart: - text: 20 分鐘 Ruby 體驗 - url: /zh_tw/documentation/quickstart/ - ruby_from_other_languages: - text: 從其他語言到 Ruby - url: /zh_tw/documentation/ruby-from-other-languages/ - explore: - text: 探索 新世界… - documentation: - text: 文件 - url: /zh_tw/documentation/ - # books: - # text: 書籍 - rubybib: - text: 學術研究 - <<: *rubybib - libraries: - text: 函式庫 - url: /zh_tw/libraries/ - success_stories: - text: 成功案例 - url: /zh_tw/documentation/success-stories/ - participate: - text: 加入 友善且持續成長的社群 - mailing_lists: - text: 郵件論壇 - url: /zh_tw/community/mailing-lists/ - description: | - 與世界各地的程式設計師一同聊聊 - user_groups: - text: 使用者群組 - url: /zh_tw/community/user-groups/ - description: | - 與身旁的 Ruby 使用者接觸 - weblogs: - text: 部落格 - url: /zh_tw/community/weblogs/ - description: | - 了解 Ruby 社群中的最新消息 - ruby_core: - text: Ruby 核心 - url: /zh_tw/community/ruby-core/ - description: | - 幫助開發最新的 Ruby - issue_tracking: - text: 問題追蹤 - url: https://bugs.ruby-lang.org/ - description: | - 回報或解決 Ruby 問題 - syndicate: - text: 訂閱 - recent_news: - text: 最新消息(RSS) - url: /zh_tw/feeds/news.rss - zh_cn: - get_started: - text: 试用,其实很简单! - try_ruby: - text: 在浏览器中试用 Ruby(英文) - <<: *try_ruby - quickstart: - text: 20 分钟体验 Ruby - url: /zh_cn/documentation/quickstart/ - ruby_from_other_languages: - text: 从其它语言转到 Ruby - url: /zh_cn/documentation/ruby-from-other-languages/ - explore: - text: 探索新的世界 - documentation: - text: 文档 - url: /zh_cn/documentation/ - # books: - # text: Books - rubybib: - text: 学术研究 - <<: *rubybib - libraries: - text: 代码库 - url: /zh_cn/libraries/ - success_stories: - text: 成功案例 - url: /zh_cn/documentation/success-stories/ - participate: - text: 加入友善及日益壮大的社区 - mailing_lists: - text: 邮件列表 - url: /zh_cn/community/mailing-lists/ - description: | - 联系喜爱 Ruby 的朋友 - user_groups: - text: 用户组 - url: /zh_cn/community/user-groups/ - description: | - 参与 Ruby 爱好者活动 - weblogs: - text: 博客 - url: /zh_cn/community/weblogs/ - description: | - 阅读 Ruby 相关的博客 - ruby_core: - text: Ruby 核心 - url: /zh_cn/community/ruby-core/ - description: | - 帮助开发 Ruby 语言 - issue_tracking: - text: 问题跟踪 - url: https://bugs.ruby-lang.org/ - description: | - 报告或帮助解决 Ruby 的问题 - syndicate: - text: 订阅 - recent_news: - text: 最新消息(RSS) - url: /zh_cn/feeds/news.rss - - subscription_form: - bg: - list: Пощенски списък - first_name: Име - last_name: Фамилия - email: Email адрес - action: Действие - subscribe: Записване - unsubscribe: Отписване - submit: Изпрати - de: - list: Mailingliste - first_name: Vorname - last_name: Nachname - email: E-Mail - action: Vorgang - subscribe: Anmelden - unsubscribe: Abmelden - submit: Absenden - en: - list: Mailing List - first_name: First Name - last_name: Last Name - email: Email Address - action: Action - subscribe: Subscribe - unsubscribe: Unsubscribe - submit: Submit Form - es: - list: Lista de correo - first_name: Nombre - last_name: Apellidos - email: Correo electrónico - action: Acción - subscribe: Subscribe - unsubscribe: Unsubscribe - submit: Enviar - fr: - list: Liste de diffusion - first_name: Prénom - last_name: Nom - email: e-mail - action: Action - subscribe: Subscribe - unsubscribe: Unsubscribe - submit: Valider - id: - list: Nama Milis - first_name: Nama Depan - last_name: Nama Belakang - email: Alamat E-mail - action: Tindakan - subscribe: Subscribe - unsubscribe: Unsubscribe - submit: Kirim - it: - list: Lista di discussione - first_name: Nome - last_name: Cognome - email: Indirizzo e-mail - action: Azione - subscribe: Subscribe - unsubscribe: Unsubscribe - submit: Invia -# ja: -# list: Mailing List -# first_name: First Name -# last_name: Last Name -# email: Email Address -# action: Action -# subscribe: Subscribe -# unsubscribe: Unsubscribe -# submit: Submit Form - ko: - list: 메일링 리스트 - first_name: 이름 - last_name: 성 - email: 이메일 주소 - action: 할일 - subscribe: 구독하기 - unsubscribe: 구독 해지 - submit: 제출하기 - pl: - list: Mailing List - first_name: First Name - last_name: Last Name - email: Email Address - action: Action - subscribe: Subscribe - unsubscribe: Unsubscribe - submit: Submit Form - pt: - list: Lista de E-mails - first_name: Primeiro Nome - last_name: Último Nome - email: E-mail - action: Ação - subscribe: Inscrever - unsubscribe: Desinscrever - submit: Enviar Formulário - ru: - list: Почтовая рассылка - first_name: Имя - last_name: Фамилия - email: Email - action: Действие - subscribe: Подписаться - unsubscribe: Отписаться - submit: Отправить - tr: - list: E-posta Listesi - first_name: Ad - last_name: Soyad - email: E-posta Adresi - action: Eylem - subscribe: Abone Ol - unsubscribe: Abonelikten Çık - submit: Formu Gönder - vi: - list: Mailing List - first_name: Tên - last_name: Họ - email: Email - action: Hành động - subscribe: Đăng kí - unsubscribe: Hủy đăng kí - submit: Nộp đơn - zh_cn: - list: 邮件列表 - first_name: 名 - last_name: 姓 - email: 电子邮件 - action: 操作 - subscribe: 订阅 - unsubscribe: 退订 - submit: 提交表单 - zh_tw: - list: 郵件論壇 - first_name: 名 - last_name: 姓 - email: 電子郵件 - action: Action - subscribe: 訂閱 - unsubscribe: 退訂 - submit: 送出表格 - - languages_heading: - bg: "Този сайт на други езици:" - de: "Diese Website in anderen Sprachen:" - en: "This site in other languages:" - fr: "Autres langues disponibles :" - id: "Situs ini dalam bahasa lain:" - it: "Questo sito in altre lingue:" - pl: "Ta strona w innych językach:" - pt: "Este site em outros idiomas:" - ru: "Этот сайт на других языках:" - tr: "Diğer dillerde bu site:" - zh_cn: "本站其他语言版本:" - - credits: - bg: | - Този сайт - се поддържа от членове на Ruby обществото. - de: | - Diese Website - wird mit Stolz von Mitgliedern der Ruby-Community gepflegt. - en: | - This website - is proudly maintained by members of the Ruby community. - es: | - Este sitio web está desarrollado con Ruby y Jekyll - y es orgullosamente mantenido por miembros de la comunidad. - Si quieres contribuir, por favor hazlo en GitHub - o contacta a nuestro webmaster - si tienes preguntas o comentarios. - fr: | - Ce site est propulsé par Ruby et Jekyll. - Il est fièrement maintenu par des membres de la communauté Ruby. - Contribuez en vous rendant sur GitHub - ou contactez le webmaster - pour toute question ou tout commentaire. - id: | - Situs ini - dengan bangga dirawat oleh anggota komunitas Ruby. - it: | - Questo sito web - è mantenuto con orgoglio dai membri della comunità Ruby. - ja: | - このウェブサイトは Ruby コミュニティのメンバーによって運営されています。 - ko: | - 이 사이트는 루비 커뮤니티의 - 구성원들이 직접 관리합니다. - pl: | - Logo Rubiego jest Zastrzeżone © 2006, Yukihiro Matsumoto; licencjonowane na warunkach CC BY-SA 2.5.

- Serwis powstał w języku Ruby przy użyciu Jekyll. - Utrzymaniem serwisu zajmuje się społeczność Rubiego. - Projekt strony Jason Zimdars. - Proszę udziel nam wsparcia na GitHub - lub skontaktuj się z naszym webmasterem - jeśli masz jakieś pytania lub komentarze dotyczące tego serwisu. - pt: | - Este website - é mantido com orgulho por membros da comunidade Ruby. - ru: | - Этот сайт с гордостью поддерживается членами сообщества Ruby. - tr: | - Bu web sitesi - Ruby topluluğunun üyeleri tarafından gururla sürdürülmektedir. - vi: | - Website này được tạo ra với Ruby sử dụng Jekyll. - Trang được bảo trì bởi các thành viên của cộng đồng Ruby. - Xin đóng góp trên GitHub - hay liên lạc với webmaster (bằng tiếng Anh) - nếu có câu hỏi hoặc ý kiến phản hồi về trang này. - zh_cn: | - 本站由 Ruby 社区的成员共同维护。 - zh_tw: | - 本站由 Ruby 社群成員共同維護。 +markdown: kramdown +permalink: pretty +highlighter: rouge + +timezone: UTC + +kramdown: + auto_ids: false + syntax_highlighter_opts: + disable: true + +exclude: + - config.ru + - Gemfile + - Gemfile.lock + - Procfile + - Rakefile + - README.md + - unicorn.rb + - lib + - test + - vendor + +url: https://www.ruby-lang.org + +license: + url: /en/about/license.txt + +svn: + stable: + version: 2.6 + branch: ruby_2_6 + previous: + version: 2.5 + branch: ruby_2_5 + old: + version: 2.4 + branch: ruby_2_4 + +locales: + sitelinks: + bg: + - text: За сваляне + url: /bg/downloads + - text: Документация + url: /bg/documentation + - text: Библиотеки + url: /bg/libraries + - text: Общност + url: /bg/community + - text: Новини + url: /bg/news + - text: Сигурност + url: /bg/security + - text: Относно + url: /bg/about + de: + - text: Downloads + url: /de/downloads + - text: Dokumentation + url: /de/documentation + - text: Bibliotheken + url: /de/libraries + - text: Community + url: /de/community + - text: Neuigkeiten + url: /de/news + - text: Sicherheit + url: /de/security + - text: Über Ruby + url: /de/about + en: + - text: Downloads + url: /en/downloads + - text: Documentation + url: /en/documentation + - text: Libraries + url: /en/libraries + - text: Community + url: /en/community + - text: News + url: /en/news + - text: Security + url: /en/security + - text: About Ruby + url: /en/about + es: + - text: Descargas + url: /es/downloads + - text: Documentación + url: /es/documentation + - text: Bibliotecas + url: /es/libraries + - text: Comunidad + url: /es/community + - text: Noticias + url: /es/news + - text: Seguridad + url: /es/security + - text: Acerca de Ruby + url: /es/about + fa: + - text: دانلودها + url: /fa/downloads + - text: مستندات + url: /fa/documentation + - text: کتابخانه‌ها + url: /fa/libraries + - text: جامعه + url: /fa/community + - text: اخبار + url: /fa/news + - text: امنیت + url: /fa/security + - text: درباره روبی + url: /fa/about + fr: + - text: Téléchargements + url: /fr/downloads + - text: Documentation + url: /fr/documentation + - text: Bibliothèques + url: /fr/libraries + - text: Communauté + url: /fr/community + - text: Actualités + url: /fr/news + - text: Sécurité + url: /fr/security + - text: À propos de Ruby + url: /fr/about + id: + - text: Unduh + url: /id/downloads + - text: Dokumentasi + url: /id/documentation + - text: Pustaka + url: /id/libraries + - text: Komunitas + url: /id/community + - text: Berita + url: /id/news + - text: Keamanan + url: /id/security + - text: Tentang Ruby + url: /id/about + it: + - text: Scarica + url: /it/downloads + - text: Documentazione + url: /it/documentation + - text: Librerie + url: /it/libraries + - text: Comunità + url: /it/community + - text: Notizie + url: /it/news + - text: Sicurezza + url: /it/security + - text: A proposito di Ruby + url: /it/about + ja: + - text: ダウンロード + url: /ja/downloads + - text: ドキュメント + url: /ja/documentation + - text: ライブラリ + url: /ja/libraries + - text: コミュニティ + url: /ja/community + - text: コア開発 + url: /ja/dev + - text: ニュース + url: /ja/news + - text: セキュリティ + url: /ja/security + - text: Rubyとは + url: /ja/about + ko: + - text: 다운로드 + url: /ko/downloads + - text: 문서 + url: /ko/documentation + - text: 라이브러리 + url: /ko/libraries + - text: 커뮤니티 + url: /ko/community + - text: 뉴스 + url: /ko/news + - text: 보안이슈 + url: /ko/security + - text: 루비에 대해서 + url: /ko/about + pl: + - text: Pobierz + url: /pl/downloads + - text: Dokumentacja + url: /pl/documentation + - text: Biblioteki + url: /pl/libraries + - text: Społeczność + url: /pl/community + - text: Wiadomości + url: /pl/news + - text: Bezpieczeństwo + url: /pl/security + - text: O języku Ruby + url: /pl/about + pt: + - text: Downloads + url: /pt/downloads + - text: Documentação + url: /pt/documentation + - text: Módulos + url: /pt/libraries + - text: Comunidade + url: /pt/community + - text: Notícias + url: /pt/news + - text: Segurança + url: /pt/security + - text: Sobre Ruby + url: /pt/about + ru: + - text: Скачать + url: /ru/downloads + - text: Документация + url: /ru/documentation + - text: Библиотеки + url: /ru/libraries + - text: Сообщество + url: /ru/community + - text: Новости + url: /ru/news + - text: Безопасность + url: /ru/security + - text: О Ruby + url: /ru/about + tr: + - text: İndirin + url: /tr/downloads + - text: Belgeler + url: /tr/documentation + - text: Kütüphaneler + url: /tr/libraries + - text: Topluluk + url: /tr/community + - text: Haberler + url: /tr/news +# - text: Güvenlik +# url: /tr/security + - text: Ruby Hakkında + url: /tr/about + vi: + - text: Downloads + url: /vi/downloads + - text: Tài liệu + url: /vi/documentation + - text: Thư viện + url: /vi/libraries + - text: Cộng đồng + url: /vi/community + - text: Tin tức + url: /vi/news + - text: Bảo mật + url: /vi/security + - text: Về Ruby + url: /vi/about + zh_cn: + - text: 下载 + url: /zh_cn/downloads + - text: 文档 + url: /zh_cn/documentation + - text: 代码库 + url: /zh_cn/libraries + - text: 社区 + url: /zh_cn/community + - text: 新闻 + url: /zh_cn/news + - text: 安全 + url: /zh_cn/security + - text: 关于 Ruby + url: /zh_cn/about + zh_tw: + - text: 下載安裝 + url: /zh_tw/downloads + - text: 文件 + url: /zh_tw/documentation + - text: 函式庫 + url: /zh_tw/libraries + - text: 社群 + url: /zh_tw/community + - text: 新聞 + url: /zh_tw/news + - text: 安全 + url: /zh_tw/security + - text: 關於 Ruby + url: /zh_tw/about + + search: + bg: + text: Търси + de: + text: Suche + cx_id: "008918821236166936739:xplclbf3sh0" + en: + text: Search + cx_id: "013598269713424429640:g5orptiw95w" + es: + text: Buscar + fa: + text: جستجو + fr: + text: Recherche + cx_id: "016749562256550695330:efcmgh3a1ac" + id: + text: Cari + it: + text: Cerca + ja: + text: 検索 + cx_id: "008288045305770251182:fvruzsaknew" + ko: + text: 찾기 + pl: + text: Szukaj + pt: + text: Procurar + ru: + text: Поиск + tr: + text: Ara + cx_id: "011743037637077038592:5tuc9cqilws" + vi: + text: Tìm + zh_cn: + text: 搜索 + zh_tw: + text: 搜尋 + + slogan: + bg: "най-добрият приятел на програмиста" + de: "Der beste Freund eines Programmierers" + en: "A Programmer's Best Friend" + es: "El mejor amigo de un desarrollador" + fa: "بهترین دوست برنامه نویس" + fr: "A Programmer's Best Friend" + id: "Sahabat Terbaik Programmer" + it: "Il migliore amico dei programmatori" + ja: "A Programmer's Best Friend" + ko: "프로그래머의 단짝 친구" + pl: "Najlepszy Przyjaciel Programisty" + pt: "O melhor amigo do programador" + ru: "лучший друг программиста" + tr: "BİR PROGRAMCININ EN İYİ ARKADAŞI" + vi: "Người bạn tri kỉ của lập trình viên" + zh_cn: "程序员最好的朋友" + zh_tw: "程式設計師的摯友" + + ruby: + bg: "Ruby" + de: "Ruby" + en: "Ruby" + es: "Ruby" + fa: "روبی" + fr: "Ruby" + id: "Ruby" + it: "Ruby" + ja: "Ruby" + ko: "루비" + pl: "Ruby" + pt: "Ruby" + ru: "Ruby" + tr: "Ruby" + vi: "Ruby" + zh_cn: "Ruby" + zh_tw: "Ruby" + + month_names: + bg: [януари, февруари, март, април, май, юни, юли, август, септември, октомври, ноември, декември] + de: [Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] + en: [January, February, March, April, May, June, July, August, September, October, November, December] + es: [Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] + fa: [ژانویه, فوریه, مارس, آوریل, مه, ژوئن, جولای, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] + fr: [Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre] + id: [Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] + it: [Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] + pl: [Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień] + pt: [Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] + ru: [Январь, Февраль, Март, Апрель, Май, Июнь, Июль, Август, Сентябрь, Октябрь, Ноябрь, Декабрь] + tr: [Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık] + vi: [Tháng một, Tháng hai, Tháng ba, Tháng tư, Tháng năm, Tháng sáu, Tháng bảy, Tháng tám, Tháng chín, Tháng mười, Tháng mười một, Tháng mười hai] + + posted_by: + bg: "Публикувана от AUTHOR на %Y-%m-%d" + de: "Geschrieben von AUTHOR am %-d.%-m.%Y" + en: "Posted by AUTHOR on %-d %b %Y" + es: "Publicado por AUTHOR el %Y-%m-%d" + fa: "ارسال شده توسط AUTHOR در تاریخ %-d %b %Y" + fr: "Posté par AUTHOR le %Y-%m-%d" + id: "Ditulis oleh AUTHOR tanggal %Y-%m-%d" + it: "Inserito da AUTHOR il %Y-%m-%d" +# ja: + ko: "작성자: AUTHOR (%Y-%m-%d)" + pl: "Zamieszczone przez AUTHOR %Y-%m-%d" + pt: "Escrito por AUTHOR em %d/%m/%Y" + ru: "Опубликовал AUTHOR %Y-%m-%d" + tr: "AUTHOR tarafından %d.%m.%Y tarihinde gönderildi" + vi: "Đăng bởi AUTHOR vào %-d %b %Y" + zh_cn: "由 AUTHOR 发表于 %Y-%m-%d" + zh_tw: "由 AUTHOR 發表於 %Y-%m-%d" + + translated_by: + bg: "Превод от" + de: "Übersetzt von" + en: "Translated by" + es: "Traducción de" + fa: "ترجمه شده توسط" + fr: "Traduit par" + id: "Diterjemahkan oleh" + it: "Tradotto da" +# ja: + ko: "번역자:" + pl: "Tłumaczone przez" + pt: "Traduzido por" + ru: "Перевел:" + tr: "Çeviri:" + vi: "Dịch bởi" + zh_cn: "翻译:" + zh_tw: "翻譯:" + + feed: + bg: + title: Ruby новини + description: Последните новини от ruby-lang.org. + lang_code: bg + de: + title: Ruby RSS News + description: Die letzten Neuigkeiten von ruby-lang.org. + lang_code: de-DE + en: + title: Ruby News + description: The latest news from ruby-lang.org. + lang_code: en-US + es: + title: Noticias de Ruby por RSS + description: Las últimas noticias de ruby-lang.org en español. + lang_code: es-ES + fa: + title: اخبار روبی + description: آخرین اخبار از ruby-lang.org. + lang_code: fa-IR + fr: + title: Actualités de Ruby-lang + description: Les dernières news sur ruby-lang.org. + lang_code: fr-FR + id: + title: Berita Ruby + description: Berita terhangat dari ruby-lang.org. + lang_code: id + it: + title: Notizie su Ruby + description: Le ultime notizie da ruby-lang.org. + lang_code: it-IT + ja: + title: ruby-langの最新ニュース + description: ruby-lang.orgの最新ニュース + lang_code: ja + ko: + title: 루비 뉴스 + description: ruby-lang.org의 최근 소식 + lang_code: ko-KR + pl: + title: Ruby Lang PL + description: Najnowsze wiadomości z ruby-lang.org. + lang_code: pl + pt: + title: Notícias sobre Ruby + description: As notícias mais recentes do ruby-lang.org em português. + lang_code: pt-PT + ru: + title: Новости Ruby + description: Последние новости с ruby-lang.org. + lang_code: ru-RU + tr: + title: Ruby Son Haberler + description: ruby-lang.org'dan en son haberler. + lang_code: tr + vi: + title: Tin tức Ruby + description: Những tin mới nhất từ ruby-lang.org. + lang_code: vi + zh_cn: + title: Ruby 新闻更新 + description: 来自 ruby-lang.org 的最新文章。 + lang_code: zh-CN + zh_tw: + title: Ruby 新聞 + description: 來自 ruby-lang.org 的新聞快報。 + lang_code: zh-TW + + news: + bg: + other_news: Други новини + more_news: Още новини... + continue: Прочетете още... + back_to_year: "Обратно към архив %Y" + recent_news: Последни новини + yearly_archive_title: "Архив %Y" + monthly_archive_title: "Архив %B %Y" + yearly_archives: Архив по година + monthly_archives: Архив по месец + yearly_archive_link: "%Y" + monthly_archive_link: "%B %Y" + de: + other_news: Weitere Neuigkeiten + more_news: Mehr Neuigkeiten... + continue: Weiterlesen... + back_to_year: "Zurück zum Archiv für %Y" + recent_news: Aktuelle Neuigkeiten + yearly_archive_title: "Archiv für %Y" + monthly_archive_title: "Archiv für %B %Y" + yearly_archives: Archiv + monthly_archives: Archiv nach Monat + yearly_archive_link: "Archiv für %Y" + monthly_archive_link: "%B %Y" + en: + other_news: Other News + more_news: More News... + continue: Continue Reading... + back_to_year: "Back to %Y Archives" + recent_news: Recent News + yearly_archive_title: "%Y Archives" + monthly_archive_title: "%B %Y Archives" + yearly_archives: Archives by Year + monthly_archives: Archives by Month + yearly_archive_link: "%Y Archives" + monthly_archive_link: "%B %Y" + es: + other_news: Otras noticias + more_news: Más noticias... + continue: Continuar leyendo... + back_to_year: "Volver a las noticias de %Y" + recent_news: Noticias recientes + yearly_archive_title: "Noticias de %Y" + monthly_archive_title: "Noticias de %B %Y" + yearly_archives: Noticias por año + monthly_archives: Noticias por mes + yearly_archive_link: "Noticias de %Y" + monthly_archive_link: "%B %Y" + fa: + other_news: سایر اخبار + more_news: اخبار بیشتر... + continue: در ادامه بخوانید... + back_to_year: "بازگشت به بایگانی %Y" + recent_news: آخرین اخبار + yearly_archive_title: "بایگانی %Y" + monthly_archive_title: "بایگانی %Y %B" + yearly_archives: بایگانی سالیانه + monthly_archives: بایگانی ماهانه + yearly_archive_link: "بایگانی %Y" + monthly_archive_link: "%B %Y" + fr: + other_news: Autres actualités + more_news: Plus d’actualités... + continue: Lire la suite... + back_to_year: "Retour aux %Y archives" + recent_news: Actualité récente + yearly_archive_title: "%Y Archives" + monthly_archive_title: "%B %Y Archives" + yearly_archives: Archives par années + monthly_archives: Archives par mois + yearly_archive_link: "Actualités de %Y" + monthly_archive_link: "%m/%Y" + id: + other_news: Berita Lain + more_news: Arsip Sebelumnya... + continue: Baca Selengkapnya... + back_to_year: "Kembali ke Arsip Tahun %Y" + recent_news: Berita Baru + yearly_archive_title: "Arsip Tahun %Y" + monthly_archive_title: "Arsip %B %Y" + yearly_archives: Arsip Tahunan + monthly_archives: Arsip Bulanan + yearly_archive_link: "Tahun %Y" + monthly_archive_link: "%B %Y" + it: + other_news: Altre Notizie + more_news: Ulteriori Notizie... + continue: Continua... + back_to_year: "Vai all'archivio %Y" + recent_news: Notizie Recenti + yearly_archive_title: "Archivio dell'anno %Y" + monthly_archive_title: "Archivio mensile %B %Y" + yearly_archives: Archivio dell'anno + monthly_archives: Archivio Mensile + yearly_archive_link: "Archivio dell'anno %Y" + monthly_archive_link: "%B %Y" + ja: + other_news: その他のニュース + more_news: もっと読む... + continue: もっと読む... + back_to_year: "%Y年のアーカイブに戻る" + recent_news: 最近のニュース + yearly_archive_title: "%Y年のアーカイブ" + monthly_archive_title: "%Y年%m月のアーカイブ" + yearly_archives: 年毎のアーカイブ + monthly_archives: 月毎のアーカイブ + yearly_archive_link: "%Y年のアーカイブ" + monthly_archive_link: "%Y年%m月" + ko: + other_news: 이전 뉴스 + more_news: 뉴스 더보기... + continue: 자세히 읽기 + back_to_year: "%Y년 아카이브로 돌아가기" + recent_news: 최근 소식 + yearly_archive_title: "%Y년 아카이브" + monthly_archive_title: "%Y년 %m월 아카이브" + yearly_archives: 년도별 아카이브 + monthly_archives: 월별 아카이브 + yearly_archive_link: "%Y년" + monthly_archive_link: "%Y년 %m월" + pl: + other_news: Pozostałe aktualności + more_news: Więcej aktualności... + continue: Więcej... + back_to_year: "Powrót do Archiwum %Y" + recent_news: Aktualności + yearly_archive_title: "Archiwum %Y" + monthly_archive_title: "Archiwum %B %Y" + yearly_archives: Archiwum wiadomości + monthly_archives: Archiwum według miesiąca + yearly_archive_link: "%Y" + monthly_archive_link: "%B %Y" + pt: + other_news: Outras Notícias + more_news: Mais Notícias... + continue: Continuar a Leitura... + back_to_year: "Voltar aos arquivos de %Y" + recent_news: Notícias Recentes + yearly_archive_title: "Arquivos de %Y" + monthly_archive_title: "Arquivos de %B %Y" + yearly_archives: Arquivos por Ano + monthly_archives: Arquivos por Mês + yearly_archive_link: "Arquivos de %Y" + monthly_archive_link: "%B %Y" + ru: + other_news: Другие новости + more_news: Больше новостей... + continue: Узнать больше... + back_to_year: "Вернуться к архивам %Y года" + recent_news: Последние новости + yearly_archive_title: "Архивы %Y года" + monthly_archive_title: "Архивы %B %Y" + yearly_archives: Архивы по годам + monthly_archives: Архивы по месяцам + yearly_archive_link: "Архивы %Y" + monthly_archive_link: "%B %Y" + tr: + other_news: Diğer Haberler + more_news: Dahası... + continue: Devamını Okuyun... + back_to_year: "%Y arşivlerine geri dönün." + recent_news: Son Haberler + yearly_archive_title: "%Y Arşivleri" + monthly_archive_title: "%B %Y Arşivleri" + yearly_archives: Yıllara göre Arşivler + monthly_archives: Aylara göre Arşivler + yearly_archive_link: "%Y Arşivleri" + monthly_archive_link: "%B %Y" + vi: + other_news: Tin khác + more_news: Thêm Tin... + continue: Đọc tiếp... + back_to_year: "Trở về %Y Lưu trữ" + recent_news: Tin mới nhất + yearly_archive_title: "Lưu trữ %Y" + monthly_archive_title: "Lưu trữ %B %Y" + yearly_archives: Lưu trữ bằng Năm + monthly_archives: Lưu trữ bằng Tháng + yearly_archive_link: "Lưu trữ %Y" + monthly_archive_link: "%B %Y" + zh_cn: + other_news: 其它新闻 + more_news: 更多新闻... + continue: 阅读全文... + back_to_year: "返回%Y年归档" + recent_news: 最新消息 + yearly_archive_title: "%Y年归档" + monthly_archive_title: "%Y年%-m月归档" + yearly_archives: 按年存档 + monthly_archives: 按月归档 + yearly_archive_link: "%Y年归档" + monthly_archive_link: "%Y年%-m月归档" + zh_tw: + other_news: 其他新聞 + more_news: 更多新聞... + continue: 深入閱讀... + back_to_year: "回到 %Y 年彙整" + recent_news: 最新消息 + yearly_archive_title: "%Y 彙整" + monthly_archive_title: "%Y 年 %-m 月彙整" + yearly_archives: 按年份彙整 + monthly_archives: 按月份彙整 + yearly_archive_link: "%Y 年彙整" + monthly_archive_link: "%Y 年 %-m 月彙整" + + sidebar: + try_ruby: &try_ruby + url: https://ruby.github.io/TryRuby/ + rubybib: &rubybib + url: https://rubybib.org/ + + bg: + get_started: + text: Започнете лесно е! + try_ruby: + text: Пробвайте Ruby! (в браузъра) + <<: *try_ruby + quickstart: + text: Ruby в 20 минути + url: /bg/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby от други езици + url: /bg/documentation/ruby-from-other-languages/ + explore: + text: Изследвайте нов свят… + documentation: + text: Документация + url: /bg/documentation/ + # books: + # text: Книги + libraries: + text: Библиотеки + url: /bg/libraries/ + success_stories: + text: Успешни истории + url: /bg/documentation/success-stories/ + participate: + text: Участвайте в приятелски настроено общество. + mailing_lists: + text: Пощенски списъци + url: /bg/community/mailing-lists/ + description: | + Дискусии относно Ruby с програмисти от цял свят. + user_groups: + text: Потребителски групи + url: /bg/community/user-groups/ + description: | + Свържете се с рубисти в твоя район. + weblogs: + text: Блогове + url: /bg/community/weblogs/ + description: | + Прочетете какво се случва в Ruby обществото. + ruby_core: + text: Ruby ядро + url: /bg/community/ruby-core/ + description: | + Помогнете за разработката на Ruby. + issue_tracking: + text: Следене на бъгове + url: https://bugs.ruby-lang.org/ + description: | + Докладвайте или помогнете за решаването на проблеми в Ruby. + syndicate: + text: Новини + recent_news: + text: Последните новини (RSS) + url: /bg/feeds/news.rss + de: + get_started: + text: Der Einstieg ist einfach! + try_ruby: + text: Teste Ruby! (im Browser) + <<: *try_ruby + quickstart: + text: Ruby in 20 Minuten + url: /de/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby für Umsteiger + url: /de/documentation/ruby-from-other-languages/ + explore: + text: Entdecke eine neue Welt… + documentation: + text: Dokumentation + url: /de/documentation/ + # books: + # text: Bücher + libraries: + text: Bibliotheken + url: /de/libraries/ + success_stories: + text: Erfolgsgeschichten + url: /de/documentation/success-stories/ + participate: + text: Beteilige dich an einer freundlichen und wachsenden Community. + mailing_lists: + text: Mailing-Listen + url: /de/community/mailing-lists/ + description: | + Sprich mit Programmierern auf der ganzen Welt über Ruby. + user_groups: + text: User-Groups + url: /de/community/user-groups/ + description: | + Treffe Rubyisten in deiner Umgebung. + weblogs: + text: Weblogs + url: /de/community/weblogs/ + description: | + Lies, was gerade jetzt in der Ruby-Community passiert. + ruby_core: + text: Ruby-Entwicklung + url: /de/community/ruby-core/ + description: | + Hilf mit, die neuesten Ruby-Versionen zu verbessern. + issue_tracking: + text: Fehler melden + url: https://bugs.ruby-lang.org/ + description: | + Melde einen Fehler oder hilf mit, offene Fehler zu beseitigen. + syndicate: + text: Syndication + recent_news: + text: Aktuelle Neuigkeiten (RSS) + url: /de/feeds/news.rss + en: + get_started: + text: Get Started, it's easy! + try_ruby: + text: Try Ruby! (in your browser) + <<: *try_ruby + quickstart: + text: Ruby in Twenty Minutes + url: /en/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby from Other Languages + url: /en/documentation/ruby-from-other-languages/ + explore: + text: Explore a new world… + documentation: + text: Documentation + url: /en/documentation/ + # books: + # text: Books + rubybib: + text: Academic Research + <<: *rubybib + libraries: + text: Libraries + url: /en/libraries/ + success_stories: + text: Success Stories + url: /en/documentation/success-stories/ + participate: + text: Participate in a friendly and growing community. + mailing_lists: + text: Mailing Lists + url: /en/community/mailing-lists/ + description: | + Talk about Ruby with programmers from all around the world. + user_groups: + text: User Groups + url: /en/community/user-groups/ + description: | + Get in contact with Rubyists in your area. + weblogs: + text: Blogs + url: /en/community/weblogs/ + description: | + Read about what’s happening right now in the Ruby community. + ruby_core: + text: Ruby Core + url: /en/community/ruby-core/ + description: | + Help polish the rough edges of the latest Ruby. + issue_tracking: + text: Issue Tracking + url: https://bugs.ruby-lang.org/ + description: | + Report or help solve issues in Ruby. + syndicate: + text: Syndicate + recent_news: + text: Recent News (RSS) + url: /en/feeds/news.rss + es: + get_started: + text: "Iníciate, ¡es fácil!" + try_ruby: + text: ¡Prueba Ruby! (en tu navegador) + <<: *try_ruby + quickstart: + text: Ruby en 20 Minutos + url: /es/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby desde otros lenguajes + url: /es/documentation/ruby-from-other-languages/ + explore: + text: Explora un nuevo mundo… + documentation: + text: Documentación + url: /es/documentation/ + # books: + # text: Libros + libraries: + text: Bibliotecas + url: /es/libraries/ + success_stories: + text: Casos exitosos (en inglés) + url: /en/documentation/success-stories/ + participate: + text: Participa en una amistosa y creciente comunidad. + mailing_lists: + text: Listas de correo + url: /es/community/mailing-lists/ + description: | + Habla sobre Ruby con desarrolladores alrededor del mundo. + user_groups: + text: Grupos de usuarios + url: /es/community/user-groups/ + description: | + Ponte en contacto con otros Rubyistas en tu localidad. + weblogs: + text: Blogs (en inglés) + url: /en/community/weblogs/ + description: | + Entérate de lo que está sucediendo en la comunidad. + ruby_core: + text: Ruby Core (en inglés) + url: /en/community/ruby-core/ + description: | + Ayuda a mejorar el futuro de Ruby. + issue_tracking: + text: Reportes de errores + url: https://bugs.ruby-lang.org/ + description: | + Reporta o ayuda a resolver problemas en Ruby. + syndicate: + text: Feeds de noticias (RSS) + recent_news: + text: En español + url: /es/feeds/news.rss + fa: + get_started: + text: شروع کنید، آسان است! + try_ruby: + text: روبی را امتحان کن! (در مرورگر خود) + <<: *try_ruby + quickstart: + text: روبی در ۲۰ دقیقه + url: /fa/documentation/quickstart/ + ruby_from_other_languages: + text: روبی از زبان‌های دیگر + url: /fa/documentation/ruby-from-other-languages/ + explore: + text: کاوش در دنیای جدید… + documentation: + text: مستندات + url: /fa/documentation/ + # books: + # text: کتاب‌ها + rubybib: + text: تحقیقات دانشگاهی + <<: *rubybib + libraries: + text: کتابخانه‌ها + url: /fa/libraries/ + success_stories: + text: داستان‌های موفقیت + url: /fa/documentation/success-stories/ + participate: + text: مشارکت در یک جامعه دوستانه و رو به رشد. + mailing_lists: + text: فهرست‌های ایمیل + url: /fa/community/mailing-lists/ + description: | + در مورد روبی با برنامه نویسان سراسر جهان صحبت کنید. + user_groups: + text: گروه‌های کاربری + url: /fa/community/user-groups/ + description: | + با Rubyists در منطقه خود تماس بگیرید. + weblogs: + text: وبلاگ‌ها + url: /fa/community/weblogs/ + description: | + اطلاعات بیشتر در مورد آنچه که الان در جامعه روبی اتفاق می‌افتد. + ruby_core: + text: هسته روبی + url: /fa/community/ruby-core/ + description: | + Help polish the rough edges of the latest Ruby. + issue_tracking: + text: ردیابی موضوع + url: https://bugs.ruby-lang.org/ + description: | + گزارش یا کمک به حل مسائل در روبی. + syndicate: + text: سندیکا + recent_news: + text: آخرین اخبار (آر‌اس‌اس) + url: /fa/feeds/news.rss + fr: + get_started: + text: Lancez-vous, c’est facile ! + try_ruby: + text: Essayez Ruby ! + <<: *try_ruby + quickstart: + text: Apprenez Ruby en vingt minutes + url: /fr/documentation/quickstart/ + ruby_from_other_languages: + text: Vous venez d'un autre langage ? + url: /fr/documentation/ruby-from-other-languages/ + explore: + text: Explorez un nouvel univers… + documentation: + text: Documentation + url: /fr/documentation/ + # books: + # text: Livres + libraries: + text: Bibliothèques + url: /fr/libraries/ + success_stories: + text: Témoignages + url: /fr/documentation/success-stories/ + participate: + text: Participez à la communauté + mailing_lists: + text: Listes de diffusion + url: /fr/community/mailing-lists/ + description: | + discutez de Ruby avec des programmeurs du monde entier. + user_groups: + text: Groupes d’utilisateur + url: /fr/community/user-groups/ + description: | + entrez en contact avec d’autres rubyistes de votre région. + weblogs: + text: Blogs + url: /fr/community/weblogs/ + description: | + suivez toute l’actualité de la communauté Ruby. + ruby_core: + text: Ruby Core + url: /fr/community/ruby-core/ + description: | + apportez votre aide à l'élaboration du prochain Ruby. + issue_tracking: + text: Rapports de bugs + url: https://bugs.ruby-lang.org/ + description: | + aidez à corriger et améliorer Ruby. + syndicate: + text: Syndication + recent_news: + text: Actualité récente (RSS) + url: /fr/feeds/news.rss + id: + get_started: + text: Coba Sekarang, sangat mudah! + try_ruby: + text: Try Ruby! (langsung di browser Anda) + <<: *try_ruby + quickstart: + text: Menguasai Ruby dalam 20 Menit + url: /id/documentation/quickstart/ + ruby_from_other_languages: + text: Dari Bahasa Pemrograman Lain ke Ruby + url: /id/documentation/ruby-from-other-languages/ + explore: + text: Jelajahi sebuah dunia baru… + documentation: + text: Dokumentasi + url: /id/documentation/ + # books: + # text: Buku-buku + libraries: + text: Pustaka + url: /id/libraries/ + success_stories: + text: Kisah Sukses + url: /id/documentation/success-stories/ + participate: + text: | + Bergabunglah dalam komunitas yang ramah dan makin + berkembang. + mailing_lists: + text: Mailing List + url: /id/community/mailing-lists/ + description: | + Berdiskusi dengan programmer Ruby dari Indonesia dan seluruh dunia. + user_groups: + text: Komunitas Pengguna + url: /id/community/user-groups/ + description: | + Berpartisipasilah dengan Rubyist di lokasi Anda. + weblogs: + text: Blog + url: /id/community/weblogs/ + description: | + Ulasan terbaru dari komunitas Ruby. + ruby_core: + text: Ruby Core + url: /id/community/ruby-core/ + description: | + Silakan berkontribusi untuk versi Ruby terbaru. + issue_tracking: + text: Laporkan Masalah + url: https://bugs.ruby-lang.org/ + description: | + Lapor atau bantu memecahkan masalah yang ada di Ruby. + syndicate: + text: Sindikasi Web + recent_news: + text: Umpan Web (RSS) + url: /id/feeds/news.rss + it: + get_started: + text: Per iniziare, è facile! + try_ruby: + text: Prova Ruby! (nel tuo browser) + <<: *try_ruby + quickstart: + text: Ruby in venti minuti + url: /it/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby a partire da altri linguaggi + url: /it/documentation/ruby-from-other-languages/ + explore: + text: Esplora un nuovo mondo… + documentation: + text: Documentazione + url: /it/documentation/ + # books: + # text: Libri + libraries: + text: Librerie + url: /it/libraries/ + success_stories: + text: Esperienze Positive + url: /it/documentation/success-stories/ + participate: + text: | + Partecipa ad una comunità amichevole e in crescita. + mailing_lists: + text: Liste di Discussione + url: /it/community/mailing-lists/ + description: | + Parla con altri programmatori Ruby da tutto il mondo. + user_groups: + text: Gruppi di Utenti + url: /it/community/user-groups/ + description: | + Entra in contatto con "Rubysti" nella tua zona. + weblogs: + text: Blog + url: /it/community/weblogs/ + description: | + Leggi cosa sta succedendo proprio adesso nella comunità di Ruby. + ruby_core: + text: Ruby Core + url: /it/community/ruby-core/ + description: | + Aiutaci a perfezionare l'ultimo Ruby. + issue_tracking: + text: Issue Tracking + url: https://bugs.ruby-lang.org/ + description: | + Segnalaci o aiutaci a risolvere problemi in Ruby + syndicate: + text: Feed RSS + recent_news: + text: Ultime Notizie (RSS) + url: /it/feeds/news.rss + ja: + get_started: + text: はじめよう! + try_ruby: + text: 試してみる! (ブラウザから) + <<: *try_ruby + quickstart: + text: 20分ではじめるRuby + url: /ja/documentation/quickstart/ + ruby_from_other_languages: + text: 他言語からのRuby入門 + url: /ja/documentation/ruby-from-other-languages/ + explore: + text: 探求しよう + documentation: + text: ドキュメント + url: /ja/documentation/ + # books: + # text: Books + rubybib: + text: 学術研究(英語) + <<: *rubybib + libraries: + text: ライブラリ + url: /ja/libraries/ +# success_stories: +# text: Success Stories +# url: /ja/documentation/success-stories/ + participate: + text: コミュニティに参加しよう + mailing_lists: + text: メーリングリスト + url: /ja/community/mailing-lists/ + description: | + 世界中のプログラマとRubyについて話しましょう。 + user_groups: + text: 日本Rubyの会 + url: http://ruby-no-kai.org/ + description: | + Rubyの利用者/開発者の支援を目的としたグループです。 + weblogs: + text: 更新順リンク + url: http://www.rubyist.net/~kazu/samidare/ + description: | + Ruby関連のサイトのリンクを更新順に並べたものです。 +# ruby_core: +# text: Ruby Core +# url: /en/community/ruby-core/ +# description: | +# Help polish the rough edges of the latest Ruby. +# issue_tracking: +# text: Issue Tracking +# url: https://bugs.ruby-lang.org/ +# description: | +# Report or help solve issues in Ruby. + syndicate: + text: Syndicate + recent_news: + text: 最近のニュース (RSS) + url: /ja/feeds/news.rss + ko: + get_started: + text: 시작하기 + try_ruby: + text: Try Ruby! + <<: *try_ruby + quickstart: + text: 20분 가이드 + url: /ko/documentation/quickstart/ + ruby_from_other_languages: + text: 다른 언어에서 루비로 + url: /ko/documentation/ruby-from-other-languages/ + explore: + text: 탐험하기 + documentation: + text: 문서 + url: /ko/documentation/ + # books: + # text: 책 + libraries: + text: 라이브러리 + url: /ko/libraries/ + success_stories: + text: 사용 사례 + url: /ko/documentation/success-stories/ + participate: + text: 커뮤니티에 참여하기 + mailing_lists: + text: 루비 사용자 포럼 + url: http://groups.google.com/group/rubykr + description: | + 한국의 루비스트를 만나세요 + user_groups: + text: 유저 그룹 + url: /ko/community/user-groups/ + description: | + 근처의 루비스트와 연락하기 + weblogs: + text: 웹로그 + url: /ko/community/weblogs/ + description: | + 루비 커뮤니티에서 지금 무슨 일이 일어나는지 읽기 + ruby_core: + text: 루비 코어 + url: /ko/community/ruby-core/ + description: | + 최신판 루비의 연마를 돕기 + issue_tracking: + text: 이슈 관리 + url: https://bugs.ruby-lang.org/ + description: | + 루비에 관한 이슈를 제보하거나 해결을 돕기 + syndicate: + text: 구독 + recent_news: + text: 최근 소식(RSS) + url: /ko/feeds/news.rss + pl: + get_started: + text: Zacznij, to proste! + try_ruby: + text: Wypróbuj Ruby! (w twojej przeglądarce) + <<: *try_ruby + quickstart: + text: Ruby w 20 Minut + url: /pl/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby a inne języki programowania + url: /pl/documentation/ruby-from-other-languages/ + explore: + text: Poznaj nowy świat… + documentation: + text: Dokumentacja + url: /pl/documentation/ + # books: + # text: Książki + libraries: + text: Biblioteki + url: /pl/libraries/ + success_stories: + text: Udane wdrożenia + url: /pl/documentation/success-stories/ + participate: + text: | + Dołącz do przyjaznej i rozrastającej się + społeczności. + mailing_lists: + text: Listy dyskusyjne + url: /pl/community/mailing-lists/ + description: | + Porozmawiaj o Ruby z programistami z całego świata. + user_groups: + text: Grupy Użytkowników + url: /pl/community/user-groups/ + description: | + Bądź w kontakcie z użytkownikami Rubiego z Twojej okolicy. + weblogs: + text: Blogi + url: /pl/community/weblogs/ + description: | + Czytaj na bieżąco co dzieje się w społeczności języka Ruby. + ruby_core: + text: Ruby Core + url: /en/community/ruby-core/ + description: | + Pomóż dopracować najnowszą wersję Rubiego. + issue_tracking: + text: Śledzenie problemów + url: https://bugs.ruby-lang.org/ + description: | + Zgłoś lub pomóż rozwiązać problemy w Rubim. + syndicate: + text: Syndicate + recent_news: + text: Ostatnie Wiadomości (RSS) + url: /pl/feeds/news.rss + pt: + get_started: + text: Primeiros passos, é fácil! + try_ruby: + text: Try Ruby! (in your browser) + <<: *try_ruby + quickstart: + text: Ruby em Vinte Minutos + url: /pt/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby a partir de outras linguagens + url: /pt/documentation/ruby-from-other-languages/ + explore: + text: Explore um novo mundo… + documentation: + text: Documentação + url: /pt/documentation/ + # books: + # text: Livros + libraries: + text: Bibliotecas + url: /pt/libraries/ + success_stories: + text: Histórias de sucesso + url: /pt/documentation/success-stories/ + participate: + text: | + Participe de uma comunidade simpática e em crescimento. + mailing_lists: + text: Listas de E-mail + url: /pt/community/mailing-lists/ + description: | + Fale sobre Ruby com programadores de todo o mundo. + user_groups: + text: Grupos de Usuários + url: /pt/community/user-groups/ + description: | + Entre em contato com colegas da sua área. + weblogs: + text: Weblogs + url: /pt/community/weblogs/ + description: | + Leia sobre o que está acontecendo agora na comunidade Ruby. + ruby_core: + text: Ruby Core + url: /pt/community/ruby-core/ + description: | + Ajude a polir as arestas da última versão do Ruby. + issue_tracking: + text: Issue Tracking + url: https://bugs.ruby-lang.org/ + description: | + Informe ou ajude a resolver problemas do Ruby. + syndicate: + text: Feeds de notícias (RSS) + recent_news: + text: Em português + url: /pt/feeds/news.rss + ru: + get_started: + text: Начните сейчас, это легко! + try_ruby: + text: Попробуйте Ruby! (в своем браузере) + <<: *try_ruby + quickstart: + text: Ruby за двадцать минут + url: /ru/documentation/quickstart/ + ruby_from_other_languages: + text: В Ruby из других языков + url: /ru/documentation/ruby-from-other-languages/ + explore: + text: Исследуйте новый мир… + documentation: + text: Документация + url: /ru/documentation/ + # books: + # text: Книги + libraries: + text: Библиотеки + url: /ru/libraries/ + success_stories: + text: Истории успеха + url: /ru/documentation/success-stories/ + participate: + text: Вступайте в дружелюбное и развивающееся сообщество. + mailing_lists: + text: Почтовые рассылки + url: /ru/community/mailing-lists/ + description: | + Разговоры о Ruby в кругу программистов со всего мира. + user_groups: + text: Группы пользователей + url: /ru/community/user-groups/ + description: | + Познакомьтесь с рубистами рядом с вами. + weblogs: + text: Блоги + url: /ru/community/weblogs/ + description: | + Читайте о том, что происходит в сообществе Ruby прямо сейчас. + ruby_core: + text: Ядро Ruby + url: /ru/community/ruby-core/ + description: | + Помощь в полировке последней версии Ruby. + issue_tracking: + text: Решение проблем + url: https://bugs.ruby-lang.org/ + description: | + Сообщайте или помогите решить проблемы в Ruby. + syndicate: + text: Синдикат + recent_news: + text: Последние новости (RSS) + url: /ru/feeds/news.rss + tr: + get_started: + text: Başlamak, çok kolay! + try_ruby: + text: Ruby'yi Deneyin! (tarayıcınızda) + <<: *try_ruby + quickstart: + text: Yirmi Dakikada Ruby + url: /tr/documentation/quickstart/ + ruby_from_other_languages: + text: Diğer Dillerden Ruby'ye + url: /tr/documentation/ruby-from-other-languages/ + explore: + text: Yeni Bir Dünya keşfedin… + documentation: + text: Belgeler + url: /tr/documentation/ + # books: + # text: Kitaplar + rubybib: + text: Akademik Araştırma + <<: *rubybib + libraries: + text: Kütüphaneler + url: /tr/libraries/ + success_stories: + text: Başarı Hikayeleri + url: /tr/documentation/success-stories/ + participate: + text: Arkadaşça ve büyüyen bir topluluğa katılın. +# mailing_lists: +# text: Mail Listeleri +# url: /tr/community/mailing-lists/ +# description: | +# Tüm dünyadan Ruby programcılarıyla görüşün. +# user_groups: +# text: Kullanıcı Grupları +# url: /tr/community/user-groups/ +# description: | +# Bölgenizdeki Ruby'cilerle temas kurun. +# weblogs: +# text: Web günlükleri +# url: /tr/community/weblogs/ +# description: | +# Rubyde neler olduğunu takip edin. +# ruby_core: +# text: Ruby Core +# url: /tr/community/ruby-core/ +# description: | +# En son Rubynin kaba taraflarının parlatılmasına yardımcı olun. + issue_tracking: + text: Sorun Takibi + url: https://bugs.ruby-lang.org/ + description: | + Ruby sorunlarını rapor edin ya da çözümüne yardım edin. + syndicate: + text: Takip Edin + recent_news: + text: Son Haberler (RSS) + url: /tr/feeds/news.rss + vi: + get_started: + text: Nhập môn, quá dễ! + try_ruby: + text: Thử Ruby! (trong trình duyệt) + <<: *try_ruby + quickstart: + text: Ruby trong 20 phút + url: /vi/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby từ những ngôn ngữ khác + url: /vi/documentation/ruby-from-other-languages/ + explore: + text: Khám phá một thề giới mới… + documentation: + text: Tài liệu + url: /vi/documentation/ + # books: + # text: Sách + libraries: + text: Thư viện + url: /vi/libraries/ + success_stories: + text: Những câu chuyện thành công + url: /vi/documentation/success-stories/ + participate: + text: Tham gia vào một cộng đồng lớn mạnh và thân thiện. + mailing_lists: + text: Mailing Lists + url: /vi/community/mailing-lists/ + description: | + Trao đổi về Ruby với các lập trình viên trên thế giới + user_groups: + text: Nhóm người dùng + url: /vi/community/user-groups/ + description: | + Làm quen với những Rubyist trong khu vực của bạn. + weblogs: + text: Weblogs + url: /vi/community/weblogs/ + description: | + Đọc về những gì đang xảy ra với cộng đồng Ruby. + ruby_core: + text: Lõi Ruby + url: /vi/community/ruby-core/ + description: | + Giúp hoàn thiện Ruby. + issue_tracking: + text: Thông báo lỗi + url: https://bugs.ruby-lang.org/ + description: | + Báo hoặc giúp xử lý các lỗi trong Ruby. + syndicate: + text: Syndicate + recent_news: + text: Tin mới (RSS) + url: /vi/feeds/news.rss + zh_tw: + get_started: + text: 上手入門,一點都不難! + try_ruby: + text: 在瀏覽器中試用 Ruby! + <<: *try_ruby + quickstart: + text: 20 分鐘 Ruby 體驗 + url: /zh_tw/documentation/quickstart/ + ruby_from_other_languages: + text: 從其他語言到 Ruby + url: /zh_tw/documentation/ruby-from-other-languages/ + explore: + text: 探索 新世界… + documentation: + text: 文件 + url: /zh_tw/documentation/ + # books: + # text: 書籍 + rubybib: + text: 學術研究 + <<: *rubybib + libraries: + text: 函式庫 + url: /zh_tw/libraries/ + success_stories: + text: 成功案例 + url: /zh_tw/documentation/success-stories/ + participate: + text: 加入 友善且持續成長的社群 + mailing_lists: + text: 郵件論壇 + url: /zh_tw/community/mailing-lists/ + description: | + 與世界各地的程式設計師一同聊聊 + user_groups: + text: 使用者群組 + url: /zh_tw/community/user-groups/ + description: | + 與身旁的 Ruby 使用者接觸 + weblogs: + text: 部落格 + url: /zh_tw/community/weblogs/ + description: | + 了解 Ruby 社群中的最新消息 + ruby_core: + text: Ruby 核心 + url: /zh_tw/community/ruby-core/ + description: | + 幫助開發最新的 Ruby + issue_tracking: + text: 問題追蹤 + url: https://bugs.ruby-lang.org/ + description: | + 回報或解決 Ruby 問題 + syndicate: + text: 訂閱 + recent_news: + text: 最新消息(RSS) + url: /zh_tw/feeds/news.rss + zh_cn: + get_started: + text: 试用,其实很简单! + try_ruby: + text: 在浏览器中试用 Ruby(英文) + <<: *try_ruby + quickstart: + text: 20 分钟体验 Ruby + url: /zh_cn/documentation/quickstart/ + ruby_from_other_languages: + text: 从其它语言转到 Ruby + url: /zh_cn/documentation/ruby-from-other-languages/ + explore: + text: 探索新的世界 + documentation: + text: 文档 + url: /zh_cn/documentation/ + # books: + # text: Books + rubybib: + text: 学术研究 + <<: *rubybib + libraries: + text: 代码库 + url: /zh_cn/libraries/ + success_stories: + text: 成功案例 + url: /zh_cn/documentation/success-stories/ + participate: + text: 加入友善及日益壮大的社区 + mailing_lists: + text: 邮件列表 + url: /zh_cn/community/mailing-lists/ + description: | + 联系喜爱 Ruby 的朋友 + user_groups: + text: 用户组 + url: /zh_cn/community/user-groups/ + description: | + 参与 Ruby 爱好者活动 + weblogs: + text: 博客 + url: /zh_cn/community/weblogs/ + description: | + 阅读 Ruby 相关的博客 + ruby_core: + text: Ruby 核心 + url: /zh_cn/community/ruby-core/ + description: | + 帮助开发 Ruby 语言 + issue_tracking: + text: 问题跟踪 + url: https://bugs.ruby-lang.org/ + description: | + 报告或帮助解决 Ruby 的问题 + syndicate: + text: 订阅 + recent_news: + text: 最新消息(RSS) + url: /zh_cn/feeds/news.rss + + subscription_form: + bg: + list: Пощенски списък + first_name: Име + last_name: Фамилия + email: Email адрес + action: Действие + subscribe: Записване + unsubscribe: Отписване + submit: Изпрати + de: + list: Mailingliste + first_name: Vorname + last_name: Nachname + email: E-Mail + action: Vorgang + subscribe: Anmelden + unsubscribe: Abmelden + submit: Absenden + en: + list: Mailing List + first_name: First Name + last_name: Last Name + email: Email Address + action: Action + subscribe: Subscribe + unsubscribe: Unsubscribe + submit: Submit Form + es: + list: Lista de correo + first_name: Nombre + last_name: Apellidos + email: Correo electrónico + action: Acción + subscribe: Subscribe + unsubscribe: Unsubscribe + submit: Enviar + fa: + list: Mailing List + first_name: نام + last_name: نام خانوادگی + email: آدرس ایمیل + action: عمل + subscribe: اشتراک + unsubscribe: لغو اشتراک + submit: ثبت فرم + fr: + list: Liste de diffusion + first_name: Prénom + last_name: Nom + email: e-mail + action: Action + subscribe: Subscribe + unsubscribe: Unsubscribe + submit: Valider + id: + list: Nama Milis + first_name: Nama Depan + last_name: Nama Belakang + email: Alamat E-mail + action: Tindakan + subscribe: Subscribe + unsubscribe: Unsubscribe + submit: Kirim + it: + list: Lista di discussione + first_name: Nome + last_name: Cognome + email: Indirizzo e-mail + action: Azione + subscribe: Subscribe + unsubscribe: Unsubscribe + submit: Invia +# ja: +# list: Mailing List +# first_name: First Name +# last_name: Last Name +# email: Email Address +# action: Action +# subscribe: Subscribe +# unsubscribe: Unsubscribe +# submit: Submit Form + ko: + list: 메일링 리스트 + first_name: 이름 + last_name: 성 + email: 이메일 주소 + action: 할일 + subscribe: 구독하기 + unsubscribe: 구독 해지 + submit: 제출하기 + pl: + list: Mailing List + first_name: First Name + last_name: Last Name + email: Email Address + action: Action + subscribe: Subscribe + unsubscribe: Unsubscribe + submit: Submit Form + pt: + list: Lista de E-mails + first_name: Primeiro Nome + last_name: Último Nome + email: E-mail + action: Ação + subscribe: Inscrever + unsubscribe: Desinscrever + submit: Enviar Formulário + ru: + list: Почтовая рассылка + first_name: Имя + last_name: Фамилия + email: Email + action: Действие + subscribe: Подписаться + unsubscribe: Отписаться + submit: Отправить + tr: + list: E-posta Listesi + first_name: Ad + last_name: Soyad + email: E-posta Adresi + action: Eylem + subscribe: Abone Ol + unsubscribe: Abonelikten Çık + submit: Formu Gönder + vi: + list: Mailing List + first_name: Tên + last_name: Họ + email: Email + action: Hành động + subscribe: Đăng kí + unsubscribe: Hủy đăng kí + submit: Nộp đơn + zh_cn: + list: 邮件列表 + first_name: 名 + last_name: 姓 + email: 电子邮件 + action: 操作 + subscribe: 订阅 + unsubscribe: 退订 + submit: 提交表单 + zh_tw: + list: 郵件論壇 + first_name: 名 + last_name: 姓 + email: 電子郵件 + action: Action + subscribe: 訂閱 + unsubscribe: 退訂 + submit: 送出表格 + + languages_heading: + bg: "Този сайт на други езици:" + de: "Diese Website in anderen Sprachen:" + en: "This site in other languages:" + fa: "این سایت به زبان‌های دیگر:" + fr: "Autres langues disponibles :" + id: "Situs ini dalam bahasa lain:" + it: "Questo sito in altre lingue:" + pl: "Ta strona w innych językach:" + pt: "Este site em outros idiomas:" + ru: "Этот сайт на других языках:" + tr: "Diğer dillerde bu site:" + zh_cn: "本站其他语言版本:" + + credits: + bg: | + Този сайт + се поддържа от членове на Ruby обществото. + de: | + Diese Website + wird mit Stolz von Mitgliedern der Ruby-Community gepflegt. + en: | + This website + is proudly maintained by members of the Ruby community. + es: | + Este sitio web está desarrollado con Ruby y Jekyll + y es orgullosamente mantenido por miembros de la comunidad. + Si quieres contribuir, por favor hazlo en GitHub + o contacta a nuestro webmaster + si tienes preguntas o comentarios. + fa: | + این وب‌سایت + با افتخار توسط اعضای جامعه روبی نگهداری می‌شود. + fr: | + Ce site est propulsé par Ruby et Jekyll. + Il est fièrement maintenu par des membres de la communauté Ruby. + Contribuez en vous rendant sur GitHub + ou contactez le webmaster + pour toute question ou tout commentaire. + id: | + Situs ini + dengan bangga dirawat oleh anggota komunitas Ruby. + it: | + Questo sito web + è mantenuto con orgoglio dai membri della comunità Ruby. + ja: | + このウェブサイトは Ruby コミュニティのメンバーによって運営されています。 + ko: | + 이 사이트는 루비 커뮤니티의 + 구성원들이 직접 관리합니다. + pl: | + Logo Rubiego jest Zastrzeżone © 2006, Yukihiro Matsumoto; licencjonowane na warunkach CC BY-SA 2.5.

+ Serwis powstał w języku Ruby przy użyciu Jekyll. + Utrzymaniem serwisu zajmuje się społeczność Rubiego. + Projekt strony Jason Zimdars. + Proszę udziel nam wsparcia na GitHub + lub skontaktuj się z naszym webmasterem + jeśli masz jakieś pytania lub komentarze dotyczące tego serwisu. + pt: | + Este website + é mantido com orgulho por membros da comunidade Ruby. + ru: | + Этот сайт с гордостью поддерживается членами сообщества Ruby. + tr: | + Bu web sitesi + Ruby topluluğunun üyeleri tarafından gururla sürdürülmektedir. + vi: | + Website này được tạo ra với Ruby sử dụng Jekyll. + Trang được bảo trì bởi các thành viên của cộng đồng Ruby. + Xin đóng góp trên GitHub + hay liên lạc với webmaster (bằng tiếng Anh) + nếu có câu hỏi hoặc ý kiến phản hồi về trang này. + zh_cn: | + 本站由 Ruby 社区的成员共同维护。 + zh_tw: | + 本站由 Ruby 社群成員共同維護。 diff --git a/_includes/languages.html b/_includes/languages.html index 7fb863ca8a..980ce0c817 100644 --- a/_includes/languages.html +++ b/_includes/languages.html @@ -8,6 +8,7 @@ Deutsch, English, Español, +فارسی, Français, Bahasa Indonesia, Italiano, diff --git a/_layouts/default.html b/_layouts/default.html index 603c5eea3c..0012312d41 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -19,10 +19,13 @@ - + {% if page.lang == "fa" %} + + {% endif %} + {% include rss_discovery.html %} - + {% if layout.javascript != null %} @@ -30,6 +33,7 @@ {% endfor %} {% endif %} + {% capture homepage_url %}/{{ page.lang }}/{% endcapture %} diff --git a/_plugins/translation_status.rb b/_plugins/translation_status.rb index 56ba749e27..04d51f3b2b 100644 --- a/_plugins/translation_status.rb +++ b/_plugins/translation_status.rb @@ -8,7 +8,7 @@ module Jekyll # Outputs HTML. module TranslationStatus - LANGS = %w[en de es id ja ko pt tr zh_cn zh_tw] + LANGS = %w[en de es fa id ja ko pt tr zh_cn zh_tw] START_DATE = '2013-04-01' OK_CHAR = '✓' diff --git a/exit b/exit new file mode 100644 index 0000000000..8578c7274c --- /dev/null +++ b/exit @@ -0,0 +1,2270 @@ +commit e9d6c7f949df32300bc052e6136d26308ec6e70e (HEAD -> master) +Author: Goudarz +Date: Fri May 31 15:17:11 2019 +0430 + + Added Persian translation + +commit dbb60a67a884c871a39d109da99de9cdf992a3b6 +Merge: d9405276 4e65b7c2 +Author: Goudarz Jafari +Date: Sun Mar 24 03:02:26 2019 +0430 + + Merge pull request #2 from ruby/master + + update repo + +commit 4e65b7c20147586fd5b873f5cd7dddce862823db +Author: Shia +Date: Sat Mar 23 19:39:32 2019 +0900 + + Update documents (ko) (#2011) + + * Backport #1682 (ko) + + * Backport #1681 (ko) + + * Backport da7c5408a5a6fb2d5c79555cb28700c096d578ba (ko) + + Ref: #1958 + + * Add RubyConferences.org + + * Update ko/community/conferences/index.md + + Co-Authored-By: riseshia + +commit f867117c1e220a9de9999cc39e4cb0c4de413fd0 +Author: Shia +Date: Sat Mar 23 19:28:00 2019 +0900 + + Translate 2019-03-05-multiple-vulnerabilities-in-rubygems.md (ko) (#2012) + + * cp {en,ko}/news/_posts/2019-03-05-multiple-vulnerabilities-in-rubygems.md + + * Translate 2019-03-05-multiple-vulnerabilities-in-rubygems.md + + * Apply suggestions from code review + + Co-Authored-By: riseshia + + * Omit some text. + +commit 9528fa34dd1856b36947f2b352147d7a7c3284db +Author: Shia +Date: Sat Mar 23 19:27:22 2019 +0900 + + Translate ruby 2.5.5 release note (ko) (#2014) + + * Import origin article + + * Translate ruby 2.5.5 release note + + * Update ko/news/_posts/2019-03-15-ruby-2-5-5-released.md + + Co-Authored-By: riseshia + +commit 30c73e610b47c64b623c3a5f78badccf107d5fc6 +Author: Shia +Date: Sat Mar 23 17:17:52 2019 +0900 + + Translate ruby 2.5.4/2.6.2 release note (ko) (#2013) + + * Import origin articles + + cp {en,ko}/news/_posts/2019-03-13-ruby-2-5-4-released.md + cp {en,ko}/news/_posts/2019-03-13-ruby-2-5-4-released.md + + * Translate ruby 2.5.4/2.6.2 release note + +commit 6be0ae7fb9debc835985a19b2926373eda1c34a8 +Merge: 6ea14a82 72fc7d21 +Author: David Padilla +Date: Thu Mar 21 11:12:16 2019 -0600 + + Merge pull request #2010 from vtamara/es-20190305-rubygems + + Translation of 2019-03-05-multiple-vulnerabilities-in-rubygems (es) + +commit 72fc7d210cdbc2bd8d49dcff92fb45230c8e0656 +Author: Vladimir Támara Patiño +Date: Wed Mar 20 21:28:47 2019 -0500 + + Translation of 2019-03-05-multiple-vulnerabilities-in-rubygems (es) + +commit 6ea14a821c0d1893deee6c98437f54c65810eb47 +Author: Vincent Lin +Date: Thu Mar 7 17:04:14 2019 +0800 + + Translate 2019-03-05 Multiple vulnerabilities in RubyGems (zh_tw) + +commit 7f34146884267e2f386469d5bd0a91fded24c905 +Author: Kuniaki IGARASHI +Date: Tue Mar 19 08:52:34 2019 +0900 + + Add WSL in en/documentation/installation + +commit ed84088a60e617472e09d0a2fc57cd94fe9a1aa8 +Author: SHIBATA Hiroshi +Date: Mon Mar 18 08:57:20 2019 +0900 + + typo + +commit db16d6e041d8788995b9013b21f8aab46d1ddb31 +Author: SHIBATA Hiroshi +Date: Mon Mar 18 08:52:43 2019 +0900 + + Move to before_install. + +commit 239eeaac2a72a231107a7f8c2a228f14727c15f6 +Author: SHIBATA Hiroshi +Date: Mon Mar 18 08:50:09 2019 +0900 + + Support Bundler 2. + +commit 50f6bf598ce026cb9dd67f2f32138d0736d7f1c2 +Author: SHIBATA Hiroshi +Date: Mon Mar 18 08:47:35 2019 +0900 + + bump version on Travis CI. + +commit 97c943c69845973f3d94bfdae556a02cc912e00f +Author: SHIBATA Hiroshi +Date: Mon Mar 18 08:31:39 2019 +0900 + + update bundles and ruby version. + +commit f8a7982951bdb794cc3cff8b34c656c00268a2c6 +Author: Marcus Stollsteimer +Date: Sat Mar 16 15:51:58 2019 +0100 + + Drop parallel build jobs on Travis CI + + For now it doesn't make sense, because build duration is not shortened + noticeably. The `test` task usually runs for only just under a second + (but as separate job adds about one minute of total runtime for setup). + +commit 4ca5fe19b3024d4b28259226e55714d1e3fb2799 +Author: Marcus Stollsteimer +Date: Sat Mar 16 14:30:11 2019 +0100 + + Small improvements in 2.5.5 post (ja) + +commit 54c33961abeddf2ab7741cbc59a21de7029e207e +Author: Marcus Stollsteimer +Date: Fri Mar 15 15:13:36 2019 +0100 + + Small improvements in 2.5.5 post (en) + +commit 6b1634b152e298f63ba5f19e2dc528ab8a0d83e4 +Merge: 08db24f7 21f5b200 +Author: nagachika +Date: Fri Mar 15 11:10:40 2019 +0900 + + Merge pull request #2005 from nagachika/release_2_5_5 + + Add release notes for 2.5.5. + +commit 21f5b2003db0b6c85f88f695e07e67b44bb14224 +Author: Chikanaga Tomoyuki +Date: Fri Mar 15 09:38:05 2019 +0900 + + Add release notes for 2.5.5. + +commit 08db24f75f17c13fb625931196c430dafd7905b1 +Author: Marvin Gülker +Date: Thu Mar 14 14:52:21 2019 +0100 + + Translate Ruby 2.6.2 released (de) + +commit e24eb606e1223a4e428338fbe9f178450b0f8320 +Author: Marvin Gülker +Date: Thu Mar 14 14:52:14 2019 +0100 + + Translate Ruby 2.5.4 released (de) + +commit 5c142322c69242ba55d128f450b3cd7a972f921d +Author: Marvin Gülker +Date: Thu Mar 14 14:52:02 2019 +0100 + + Translate RubyGems vulnerabilities post (de) + +commit fa3ef0dcd70a3a589be23321fe133f206b7139b3 +Author: Marcus Stollsteimer +Date: Wed Mar 13 21:39:00 2019 +0100 + + Mark bg, fr, it, ru, vi as unmaintained + + * add unmaintained notice + * do not redirect there from /index.html + * update language list for translation_status tag + +commit baefd72dbabe5c59a08eef28c94e40a073bf1320 +Author: Marcus Stollsteimer +Date: Wed Mar 13 21:38:48 2019 +0100 + + Do not redirect to unmaintained translations + + Do not automatically redirect from /index.html to unmaintained + or outdated translations. Currently this affects pl, tr. + + Related to #1828. + +commit 405929d8f38bab4fe4147222b353537c9058e70c +Author: Marcus Stollsteimer +Date: Wed Mar 13 21:38:39 2019 +0100 + + Remove unmaintained notice for pt + +commit 218d5569e9dbf7219e657acefcef0f6061ae1bad +Author: Marcus Stollsteimer +Date: Wed Mar 13 21:38:29 2019 +0100 + + Remove unmaintained notice for id + +commit 348885026bbbf61527a7025acf4d17bf4fb3984d +Merge: e19302df 7b7bdec0 +Author: Marcus Stollsteimer +Date: Wed Mar 13 21:23:01 2019 +0100 + + Merge pull request #1997 from sho-h/add_2.6_rurema_link + + Add a link to rurema for Ruby 2.6.0 (ja) + +commit e19302df6c4d5c5b09a185e89298980e186c4cbf +Author: Marcus Stollsteimer +Date: Wed Mar 13 14:56:25 2019 +0100 + + Update gem bundle + +commit e94406b23ba3e27d7267f15b43691af628414e90 +Author: Marcus Stollsteimer +Date: Wed Mar 13 14:45:20 2019 +0100 + + Fix grammar in news posts (en) + +commit 38e65bfa5a49cc8d068757d95609bb1b5355c2d7 +Author: Marcus Stollsteimer +Date: Wed Mar 13 14:40:43 2019 +0100 + + Add newlines + +commit 8f324ed68229fb9a4c19e5e4d373b7ebb7b94bd1 +Merge: e218bf24 da7c635d +Author: NARUSE, Yui +Date: Wed Mar 13 21:31:56 2019 +0900 + + Merge pull request #2004 from ruby/fix_typo_in_ruby_2_6_2_releasenotes + + Fix typo in commit log links. + +commit da7c635db790d6ed246ce2883b5ba116a1591cb5 +Author: Chikanaga Tomoyuki +Date: Wed Mar 13 21:24:58 2019 +0900 + + Fix typo in commit log links. + +commit e218bf24326b177270bc1ae102bb2fdc704fda65 +Author: nagachika +Date: Wed Mar 13 20:16:06 2019 +0900 + + Update en/news/_posts/2019-03-13-ruby-2-6-2-released.md + + fix author + + Co-Authored-By: nurse + +commit 1c8a85805eb027320dc2119d2ce5eb1cff9ad334 +Author: NARUSE, Yui +Date: Wed Mar 13 20:08:34 2019 +0900 + + Ruby 2.6.2 released + +commit cb2cd1263be2efc92a482a73a21e91c334a1d9c1 +Merge: 7560b1bd dced8d87 +Author: nagachika +Date: Wed Mar 13 20:32:11 2019 +0900 + + Merge pull request #2002 from nagachika/release_2.5.4 + + Release 2.5.4 + +commit dced8d87d3981db3f4981a814326530e3232a1db +Author: Chikanaga Tomoyuki +Date: Wed Mar 13 19:58:13 2019 +0900 + + Fix typos. + +commit 20a399fd447b20b35e3cebd20a20edb95d6515f4 +Author: Chikanaga Tomoyuki +Date: Wed Mar 13 19:42:41 2019 +0900 + + Update _data/releases.yml and _data/downloads.yml + +commit ed3a28378a37f6b40ef06de5a4e80795e79c2462 +Author: Chikanaga Tomoyuki +Date: Wed Mar 13 19:38:34 2019 +0900 + + Add release notes for ruby 2.5.4. + +commit 6076694972892cb1a1693134fee72b0be5f33a7c +Author: Chikanaga Tomoyuki +Date: Wed Mar 13 19:33:32 2019 +0900 + + Add fixed rubygems version 2.7.6.2 in Workarounds section. + +commit 7560b1bdda368f683ff9d819fe8a225f6df4fa55 +Author: Marcus Stollsteimer +Date: Mon Mar 11 20:31:04 2019 +0100 + + Remove dead link to MORPHA + + The site of the MORPHA project is no longer available under this URL + and the domain is not even related to the project anymore. + + Closes #1845 + +commit d229628f43e6ecf8d916f863c25268ec1649695b +Merge: da7c5408 69b5892b +Author: SHIBATA Hiroshi +Date: Mon Mar 11 14:20:51 2019 +0900 + + Merge pull request #1993 from alaxalves/travis-improv + + Paralleling Travis jobs to shorten build duration + +commit 7b7bdec0c17663ebdcfb6c0ce8be4293589f587b +Author: Sho Hashimoto +Date: Mon Mar 11 09:42:24 2019 +0900 + + Change listing order. Make newer versions upper. + +commit 32f55d6f8b47ba0263fa30cf3525942745fd24ae +Author: Sho Hashimoto +Date: Sun Mar 10 16:56:01 2019 +0900 + + Add a link to rurema for Ruby 2.6.0 (ja) + +commit 69b5892bf6c65d2d8bf3b25e8581189bc3dc21db +Author: Marcus Stollsteimer +Date: Fri Mar 8 22:47:51 2019 +0100 + + Simplify build matrix for Travis CI + +commit da7c5408a5a6fb2d5c79555cb28700c096d578ba +Author: Marcus Stollsteimer +Date: Fri Mar 8 22:15:24 2019 +0100 + + Remove defunct conference sites (en) + + Closes #1958 + + Co-authored-by: Jacob Herrington + +commit b0fc2a7098ba42c6eee308aa86bafc1b59d7e3e2 +Author: Marcus Stollsteimer +Date: Fri Mar 8 22:06:16 2019 +0100 + + Remove dead link to blastwave.org + + Closes #1860 + +commit 9124a20b4f78bd615f0213c95bf0c9a8c3b8cdbf +Author: Marcus Stollsteimer +Date: Fri Mar 8 21:58:26 2019 +0100 + + Use named link references on community page + +commit 118909f9021a77d67508cc5bbffbac7bc16ca8fa +Author: BannerGames +Date: Fri Jul 20 21:28:12 2018 +0100 + + Translate Ruby 2.2 EOL post (pt) + + Closes #1818 + + Co-authored-by: Marcus Stollsteimer + Co-authored-by: Júlio Campos + Co-authored-by: Alax Alves + +commit 58f2af25dfe081bd014cf6f8f1cc1e413f6606c5 +Merge: 3901bf1d b26c5feb +Author: Marcus Stollsteimer +Date: Fri Mar 8 08:37:25 2019 +0100 + + Merge pull request #1466 olivierlacan/podcasts + + Add Podcasts section to Community + + Conflicts: + en/community/index.md (outdated URLs) + +commit 3901bf1d4a97e03084dec948321d9bb0d7a38a03 +Author: Olivier Lacan +Date: Fri Mar 8 08:34:25 2019 +0100 + + Use named link references on community page (en) + +commit a3b31d305ef74e6d22672408a120d2ccfb65ccfd +Author: Marcus Stollsteimer +Date: Fri Mar 8 08:30:16 2019 +0100 + + Add newline after YAML front matter + +commit e2b3274573cfeb94f8f003f6ef5ef15647c4f319 +Author: Marcus Stollsteimer +Date: Fri Mar 8 08:29:40 2019 +0100 + + Use untranslated 'SIZE' in download section (es) + +commit 3de10c19b94b1a0292c6facd6be9e818e93eb08a +Merge: b72499bc faaecfc5 +Author: SHIBATA Hiroshi +Date: Fri Mar 8 09:03:42 2019 +0900 + + Merge pull request #1996 from stomar/update-history + + Mention updated patches in news post history + +commit faaecfc5c5c0f6beb06f1001ffd8c3c793353c0a +Author: Marcus Stollsteimer +Date: Thu Mar 7 19:37:42 2019 +0100 + + Mention updated patches in news post history + +commit b72499bcfe2645ff19fcd82a722841da35fcfdf8 +Author: SHIBATA Hiroshi +Date: Wed Mar 6 14:26:27 2019 +0900 + + Update urls for the latest patch + +commit e3caede3377cfb6618091e3a2d1697b4c9e747b8 +Author: Alax Alves +Date: Tue Mar 5 22:44:59 2019 -0300 + + Making bundle cache work properly + +commit 18e17f9e4119c48bac39be02235660c764a8f8b0 +Author: Alax Alves +Date: Tue Mar 5 22:28:42 2019 -0300 + + Paralleling Travis jobs to shorten build duration + +commit ffe9e474fe3255a292faac8fcf6514ddfff29b22 +Author: Marcus Stollsteimer +Date: Tue Mar 5 22:24:36 2019 +0100 + + Small improvements on blogs page (en) + + Fix questionable statement in summary (replacing "past year" + with "past years"), and typos. + +commit 167e93910936ae3b8fc134d2176f7791d0b610ba +Author: Marcus Stollsteimer +Date: Tue Mar 5 22:06:10 2019 +0100 + + Small improvements on installation page (en) + + Remove reference to latest macOS to avoid having to update it; + improve snap section; other small fixes. + +commit 379e180226bacd54ddeb6a4dafa56241382104ff +Author: Marcus Stollsteimer +Date: Tue Mar 5 21:49:21 2019 +0100 + + Use named link reference for recently added link + +commit cf032c821d0e85a0a4b396d026eccb39f67aabaa +Author: Marcus Stollsteimer +Date: Tue Mar 5 21:35:08 2019 +0100 + + Small fix in news post (en) + +commit 907980a835da2a5541c0de9538e3d06232f3bcdb +Merge: bc7c7eca 944a697e +Author: SHIBATA Hiroshi +Date: Tue Mar 5 15:49:19 2019 +0900 + + Merge pull request #1991 from stomar/use-ruby-2.6.1 + + Use Ruby 2.6.1 + +commit bc7c7ecad4cef92c6980bd43e4f55de3ec7a3e74 +Author: SHIBATA Hiroshi +Date: Tue Mar 5 12:34:43 2019 +0900 + + Update the wrong version of RG 2.7.x and the revision of trunk branch. + +commit 02b7079b039f998bcf88957d1858c817c2424719 +Author: SHIBATA Hiroshi +Date: Tue Mar 5 09:16:30 2019 +0900 + + oops + +commit ed4d7a21cd6b72e95694de814814b3d0bb83f9cf +Author: SHIBATA Hiroshi +Date: Tue Mar 5 09:06:18 2019 +0900 + + Update patch link with bugs.ruby-lang.org. + +commit 8f11fef7298968c5597283b0a0c252cb73001e31 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 18:02:57 2019 +0900 + + Revert to mention the released version of Ruby. + +commit e2f18e4bb2204d32f73b78412be0e8ff16627253 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 11:11:09 2019 +0900 + + Security Advisories for RubyGems Mar, 2019. + +commit 944a697e3a3d21c646ab3aaa422ec6d26057097a +Author: Marcus Stollsteimer +Date: Mon Mar 4 22:22:21 2019 +0100 + + Use Ruby 2.6.1 + +commit 2bcc020a21c6603ba5b717991e51a23ade9eda05 +Author: Marcus Stollsteimer +Date: Mon Mar 4 22:15:05 2019 +0100 + + Remove HOST constant + + HOST was only used by validate-website-static via the check:markup task, + but it has no significance, since the task checks the local files and not + the specified URL. + +commit 455e796d20d93793022c90f67ca4e4a6ddef66c1 +Author: Marcus Stollsteimer +Date: Mon Mar 4 16:05:57 2019 +0100 + + Drop mention of specific Ruby versions (en) (#1681) + +commit 3cac2f50c1384a25eb8b9296e5b746a56a9592c7 +Author: Marcus Stollsteimer +Date: Mon Mar 4 15:48:38 2019 +0100 + + Fix typo (en) + +commit 6fc0cdd5f46debecb1226daa6f94554df59c5509 +Merge: f2bf13ee d0cbdb32 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 13:00:03 2019 +0900 + + Merge pull request #1988 from znz/revive-yaml-front-matter + + Revive YAML front matter + +commit d0cbdb32665864929c618ac1c80e223af31250c3 +Author: Kazuhiro NISHIYAMA +Date: Mon Mar 4 11:22:18 2019 +0900 + + Revive YAML front matter + + to enable liquid tags again. + This partially reverts 2c8ff6b80a1d8fb2b8b86e38996fdd7e6b8c491d. + +commit f2bf13ee6189fa4b9f033d5f2f3f3ac48b73b452 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 11:10:41 2019 +0900 + + update bundles + +commit 1179e693a79f0ee64b18888091b375761c53b5f1 +Merge: 5dae4fd9 2c8ff6b8 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 10:59:28 2019 +0900 + + Merge pull request #1987 from spk/fix-markup-issues + + Fix markup issues + +commit 5dae4fd98fd3067362ff965390f056d88777d8a2 +Merge: 1f5e3048 8a558839 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 10:58:51 2019 +0900 + + Merge pull request #1978 from ismailarilik/fix-meaning-of-description + + Fix meaning of language description in main page (tr) + +commit 1f5e30482b7f9dc7d8adc427ccde58bf64d8d283 +Merge: 578c091b 17059f34 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 10:58:35 2019 +0900 + + Merge pull request #1976 from ismailarilik/add-necessary-suffix + + Add necessary suffix (tr) + +commit 578c091be7d0f60c8a6dd2397ab7cc0a5e878a3a +Merge: ffba6ad8 4ee1fd32 +Author: SHIBATA Hiroshi +Date: Mon Mar 4 10:57:34 2019 +0900 + + Merge pull request #1944 from infertux/add-fr-mirror + + Add French mirror (HTTP, HTTPS and rsync) + +commit ffba6ad82088c3cfcca3fb1b8314d73a92aa9fae +Merge: 9feddd17 f088a9ed +Author: SHIBATA Hiroshi +Date: Mon Mar 4 10:54:57 2019 +0900 + + Merge pull request #1843 from jcserracampos/fukuokarubyaward2018 + + Translate 2018 Fukuoka Ruby Award Competition (pt) + +commit 9feddd1751a71d6f557c3234bb1fdf7ccf945726 +Merge: 660a8159 6320b95e +Author: SHIBATA Hiroshi +Date: Mon Mar 4 10:51:46 2019 +0900 + + Merge pull request #1682 from stomar/solaris-en + + Remove Solaris section from installation page (en) + +commit 2c8ff6b80a1d8fb2b8b86e38996fdd7e6b8c491d +Author: Laurent Arnoud +Date: Sun Mar 3 16:23:28 2019 +0100 + + Fix tidy js check + + ref https://github.com/htacg/tidy-html5/issues/65 + +commit f386e7f9720f3224ed07a40c28888c42f61caf15 +Author: Laurent Arnoud +Date: Sun Mar 3 16:11:56 2019 +0100 + + Fix uri encoding + + >> URI.encode "https://www.google.com/maps/search/松江テルサ/@35.463976,133.062015,14z?hl=ja" + => "https://www.google.com/maps/search/%E6%9D%BE%E6%B1%9F%E3%83%86%E3%83%AB%E3%82%B5/@35.463976,133.062015,14z?hl=ja" + +commit a44c5af2f3ed2fb446e48d0178db0ff9c7a18c53 +Author: Laurent Arnoud +Date: Sun Mar 3 16:11:11 2019 +0100 + + Fix missing open code tag + +commit 660a8159bdee73f1c56e25bf667872c6dea4511c +Author: Vincent Lin +Date: Mon Feb 25 09:44:37 2019 +0800 + + Remove useless backspace in posts (zh_tw, zh_cn) (#1986) + +commit 5db6009dd330ae56797c0355434d38ded634c1f8 +Author: İsmail Arılık +Date: Mon Feb 25 02:36:39 2019 +0300 + + Fix typo in installation page (ko) (#1984) + +commit 8a558839967960d7821e2853457d963851cfb319 +Author: İsmail Arılık +Date: Sat Feb 23 14:42:04 2019 +0300 + + Fix meaning of language description in main page (tr) + +commit 17059f34db45eeead056338d8d60218b4d04c360 +Author: İsmail Arılık +Date: Sat Feb 23 12:47:18 2019 +0300 + + Add necessary suffix (tr) + +commit c50956c36e6d66c438504ec1aacfc975fae25484 +Author: Chayoung You +Date: Thu Feb 21 09:31:05 2019 +0900 + + Update translation of downloads page (ko) (#1975) + +commit b2cf27fdad276eb754c4be2f145d92c572d161a8 +Author: Vincent Lin +Date: Wed Feb 20 18:11:06 2019 +0800 + + Update Download Ruby page (zh_tw, zh_cn) + +commit 824ddc013d4cae5a13a442efe7bdf0e5e465abc4 +Author: Marcus Stollsteimer +Date: Thu Feb 14 15:38:43 2019 +0100 + + Use named link references + + Partially revert 1171065 and d4e30a683 to use named link references + for Atom, and restore previous order of the references; + also introduce named link references for VS code. + +commit c3fe63969513de1214ce2e6497fc22ee159acdb0 +Author: Chayoung You +Date: Tue Feb 12 12:05:13 2019 +0900 + + Rephrase copy on the blog page (ko) (#1972) + +commit d4e30a683194e6695b766092aac83924d2d10b99 +Author: Jacob Herrington +Date: Sun Feb 10 08:02:28 2019 -0600 + + Editor list fixes in more languages (id, ja, ko, pt, vi, zh_cn, zh_tw) (#1968) + + * Remove duplicate instances of Atom (vi) + + * Add VS Code to editors (vi) + + * Move extensions link (vi) + + * Remove multiple instances of Atom (ja) + + * Add VS Code to editor list (ja) + + * Remove duplicate instances of Atom (tw) + + * Add VS Code to editor list (tw) + + * Remove duplicate instances of Atom (cn) + + * Add VS Code to editor list (cn) + + * Remove duplicate instances of Aton (pt) + + * Add VS Code to editor list (pt) + + * Remove duplicate instances of Atom (ko) + + * Move extensions link (ko) + + * Add VS code to editor list (ko) + + * Remove duplicate instances of Atom (id) + + * Move extensions link (id) + + * Add VS code to editor list (id) + +commit 4eef1d373cbc54bf2e97398b35da6f23a9a30ce9 +Author: Vincent Lin +Date: Sun Feb 10 19:15:13 2019 +0800 + + Add the link to the Ruby Bibliography in the sidebar (zh_tw, zh_cn) + +commit 147cf89e8510939643a29c52cc20f370309b61e8 +Author: jacobherrington +Date: Sat Feb 9 12:26:25 2019 -0600 + + Fix dmoz.org links + + dmoz.org is no longer active. dmoztools.net still hosts a lot of the + same content. This commit updates those links. + +commit 6358ecb254d0312d0e1a1f5c92e7613dc36a1c81 +Author: Jacob Herrington +Date: Sat Feb 9 05:58:17 2019 -0600 + + Update dmoz.org to dmoztools.net on community page (en) (#1966) + + * Update dmoz.org to dmoztools.net + + dmoz.org is no longer operating, but the information is still available + on dmoztools.net. I think it's worth considering changing these + resources out for more modern ones. + + * Add https to links and fix broken dmztools.net link + +commit 117106587e2f0c98b6b643ce69855b764ffff631 +Author: Jacob Herrington +Date: Sat Feb 9 05:56:43 2019 -0600 + + Fixes Editor list on documentation page (en) (#1965) + + * Standardize editor links + + Atom was using a different style for the markdown link than the other + editors, so I changed it to be consistent. + + * Move extensions link due to it's uniqueness + + * Add VS Code to cross platform editors + + * Remove multiple links to Atom + + Atom should be listed only once on the cross-platform list + +commit 4b192570d10e2a24b49df9b07f270261820c0073 +Author: jacobherrington +Date: Fri Feb 8 09:11:22 2019 -0600 + + Rephrase copy on the blog page (en) + + The copy on this page had a bit of odd phrasing. These changes make more + sense to me. + +commit f22ca9c53260ce0f89f1809bb210430e19d51bf9 +Author: Marcus Stollsteimer +Date: Fri Feb 8 14:20:41 2019 +0100 + + Add newlines + +commit 97c48651ef1def20266ebf4fd55d365d7304d718 +Author: Shia +Date: Fri Feb 8 16:34:55 2019 +0900 + + Add known problem section to 2.6.0 release post (ko) (#1962) + + * Add known problem section + + Ref: https://github.com/ruby/www.ruby-lang.org/pull/1953/files#diff-75096a7d388db30daf2a0bcdcf0a035b + + * Better korean sentence + +commit 0c72b6e2418494bca5e0e9e04024b628e28a7882 +Merge: 7bf7df86 9aaf816b +Author: Andrias Meisyal +Date: Wed Feb 6 13:51:14 2019 +0700 + + Merge pull request #1961 from meisyal/ruby-2.6.0-rc2-news + + Translate Ruby 2.6.0-rc2 released news (id) + +commit 9aaf816b9b354ad32875b8ec184c6d651520cf1d +Author: Andrias Meisyal +Date: Tue Feb 5 20:55:33 2019 +0700 + + Translate Ruby 2.6.0-rc2 released news (id) + +commit 7bf7df8695f0d79039048069035b351a243227fc +Author: Tadashi Saito +Date: Thu Jan 31 00:29:38 2019 +0900 + + Add a item to sync with English version announcement of Ruby 2.6.1 + +commit 543830cccbdd82622ec6f89d648e456fc98ec065 +Author: Delton Ding +Date: Mon Feb 4 01:03:55 2019 +0900 + + Translate 2.6.1 Release Post (zh_cn) + +commit 966a4d221857b07e463d1e3cfe35018be1b05037 +Author: Vincent Lin +Date: Fri Feb 1 01:56:43 2019 +0800 + + Translate Ruby 2.6.1 Released (zh_tw) + +commit c38799a198ba05afc491e7852c81523a602bee87 +Author: Chayoung You +Date: Fri Feb 1 09:58:33 2019 +0900 + + Translate Patch Writer's Guide (ko) (#1952) + + * Translate Patch Writer's Guide (ko) + * Apply reviews + +commit ac8eeb6da0303aa81a4981497092e1fa1defe47f +Merge: 44dc0b0b 813f6374 +Author: David Padilla +Date: Thu Jan 31 17:50:05 2019 -0600 + + Merge pull request #1956 from vtamara/es-20190130-ruby-2-6-1 + + Translate Ruby 2.6.1 (es) + +commit 44dc0b0b56ba4edb9f1b6bbd79a1725c7ee25629 +Author: Marvin Gülker +Date: Thu Jan 31 15:00:50 2019 +0100 + + Translate 2.6.1 release post (de) + +commit 813f6374beb8f2cb17d577fed4c292238f7c5255 +Author: Vladimir Támara Patiño +Date: Thu Jan 31 07:44:03 2019 -0500 + + Translate Ruby 2.6.1 (es) + +commit eaf295f51ce9b7ffa29f35b02e189762efd476e9 +Author: Shia +Date: Thu Jan 31 16:46:23 2019 +0900 + + Translate ruby 2.6.1 release news (ko) (#1955) + + * Copy origin news + + * Translate ruby 2.6.1 release news (ko) + + * Update ko/news/_posts/2019-01-30-ruby-2-6-1-released.md + + Co-Authored-By: riseshia + +commit 8f0d8c2bd0edc24950eabb1282a808e14dda8c2c +Merge: 2cde0d44 4bd41f08 +Author: NARUSE, Yui +Date: Wed Jan 30 21:29:29 2019 +0900 + + Merge pull request #1953 from nurse/ruby-2-6-1-released + + Ruby 2.6.1 Released + +commit 4bd41f0862390e3c698e9919e64afe4afe152291 +Author: Samuel Williams +Date: Thu Jan 31 01:12:51 2019 +1300 + + Fix formatting. + +commit 894ec6e7751785b782ec2cbddcb8d93cbcb6d8ae +Author: Samuel Williams +Date: Thu Jan 31 01:11:23 2019 +1300 + + Hot topic first then see others. + +commit 26f8db9b88d8446efd1a99b3ab649780b89a9e98 +Author: Oshan Wisumperuma +Date: Mon Jan 28 14:52:05 2019 +0530 + + Update 2018-12-25-ruby-2-6-0-released.md + + ruby/ruby#2058 + +commit 5b4396bebd59e7aa5b5f7106d5d25d643ffc9006 +Author: Samuel Williams +Date: Thu Jan 31 01:05:30 2019 +1300 + + Add notable changes/fixes. + +commit 2d90aff31c27614ed715bf4faf759ebfd47a452d +Author: NARUSE, Yui +Date: Wed Jan 30 20:01:05 2019 +0900 + + Ruby 2.6.1 Released + +commit 2cde0d4464d2ec3b32a1ba94445e33f6d1ff1edc +Merge: fe09aede 537ababb +Author: Sorah Fukumori +Date: Sun Jan 27 20:41:40 2019 +0900 + + Merge pull request #1950 from miyohide/patch-4 + + Add posts about Rubima 0059 published (ja) + +commit 537ababb6206a37a76188eeab030773b74570c91 +Author: miyohide +Date: Sun Jan 27 09:28:42 2019 +0900 + + Add posts about Rubima 0059 published (ja) + + RubiMa Editors have released Rubyist Magazine 0059 (in japanese). + +commit fe09aedecd335e1ea31fca29f25eafac2bff4d04 +Author: Andrias Meisyal +Date: Fri Nov 30 06:24:14 2018 +0700 + + Translate Ruby 2.5.3 released news (id) + +commit 48f03b32459bb99bf2bcbeae8373aced9208809c +Author: Andrias Meisyal +Date: Sat Nov 17 22:48:55 2018 +0700 + + Translate Ruby 2.3.8 released news (id) + +commit 37b9f9bf4b8331d0d63cd9a12cb6f9f62aa70dfd +Author: Delton Ding +Date: Wed Jan 23 10:52:47 2019 +0900 + + Translate 2.6.0 Released Post (zh_cn) (#1927) + +commit a35bad79ec90e4b8a281614d95a6028ce6b9e708 +Author: Andrias Meisyal +Date: Sun Dec 30 15:16:39 2018 +0700 + + Translate 2019 Fukuoka Ruby Award Competition post (id) + +commit 5e68a22ff611c1a47d893009c32946c5fb2bd2dc +Author: Andrias Meisyal +Date: Tue Jan 22 10:52:00 2019 +0700 + + Translate the official ruby snap news post (id) (#1919) + +commit 6a4069736afabed620b5200743bda7b80493fc3b +Author: Vincent Lin +Date: Sun Jan 20 23:49:24 2019 +0800 + + Translate Ruby 2.6.0 Released post (zh_tw) + +commit 3d8dd1b2800ec5e1b028d668a6ec772bb3f74262 +Author: Marcus Stollsteimer +Date: Sun Jan 20 16:42:29 2019 +0100 + + Remove MacRuby from about page (translations) + +commit 81f6058cca50bd1adf482ecbfccac397b12b986f +Author: Marcus Stollsteimer +Date: Sun Jan 20 16:18:20 2019 +0100 + + Add newlines + +commit 5ddf5cd51488bd723b3f73a7c7d97941dd32bcbf +Author: Andrias Meisyal +Date: Sun Jan 20 20:43:03 2019 +0700 + + Translate Ruby 2.6.0-rc1 released news (id) (#1945) + +commit d110924ee592ef6bab9afc6ea391e9a1409d3c9a +Author: Vinicius Brasil +Date: Sun Jan 20 11:41:44 2019 -0200 + + Translate Fukuoka Ruby Award 2019 post (pt) (#1937) + + Translate pt/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md + + Co-Authored-By: vnbrs + Co-Authored-By: Júlio Campos + +commit c3e2ff68a287740572cf659336f55ec8158a98bf +Author: Shia +Date: Tue Jan 15 23:54:17 2019 +0900 + + Translate Ruby Community Conduct Guideline (ko) (#1946) + + * Copy original article + + * Translate Ruby Community Conduct Guideline(ko) + + * Apply suggestions from code review + + Co-Authored-By: riseshia + +commit 7a0e41bec13cb65a3dd9012d3b1546f66495432c +Author: Vincent Lin +Date: Sat Jan 12 20:12:50 2019 +0800 + + Update translation of Documentation (zh_tw) + +commit 6900c10b75c0038e64c4150ccd80103014317b7f +Author: Vinicius Brasil +Date: Wed Jan 9 00:32:23 2019 +0000 + + Translate Ruby Snap post (pt) (#1940) + + * Translate 2018 Nov Ruby Snap post (pt) + + Co-Authored-By: vnbrs + +commit 669538a74d96b11a7cc3031fd176f062ee3469bd +Author: Delton Ding +Date: Sat Dec 29 19:33:01 2018 +0900 + + Translate 2.6.0-rc2 released news (zh_tw) + +commit f35e71090cc5e78a7efe64f506b88cf48e32ad5a +Author: Delton Ding +Date: Mon Dec 31 10:36:19 2018 +0900 + + Translate Ruby 2.6.0-rc1 Released Post (zh_tw) + +commit 4ee1fd324b04ca4bdba2ed3d42a9bbd1d08a85a1 +Author: Cédric Félizard +Date: Thu Jan 3 10:20:50 2019 +0000 + + Add French mirror (HTTP, HTTPS and rsync) + +commit 5f9f13ace38ac91760466820c71464e6700efad7 +Author: Andrias Meisyal +Date: Wed Jan 2 20:59:35 2019 +0700 + + Update success stories (id) (#1844) + +commit 003344c4670fa9b3710a0320f60e2564194d1f4f +Author: Shia +Date: Tue Jan 1 22:49:33 2019 +0900 + + Translate snap article (ko) (#1943) + + * Import Original diff + + * Translate snap article (ko) + + * Apply suggestions from code review + + Co-Authored-By: riseshia + +commit 0328087520358160abda366c3e9ed7e761b3220f +Author: Shia +Date: Tue Jan 1 12:52:16 2019 +0900 + + Update blog section (ko) (#1942) + + * %s/웹로그/블로그/ + + * Sync up Original post + + * Follow up blog section update (ko) + + Follow up https://github.com/ruby/www.ruby-lang.org/pull/1889 + + * Backport of #1941 + + * Use single quote + + * Apply suggestions from code review + + Co-Authored-By: riseshia + + * Better translation + +commit f3c342483067fea19b30039faaa15bc0347927e6 +Author: Shia +Date: Tue Jan 1 11:23:31 2019 +0900 + + Add link for Ruby Weekly (#1941) + +commit e72d59b11ef642478c3ceacc2b66490ee20262e5 +Author: Samuel Williams +Date: Wed Dec 26 13:22:08 2018 +1300 + + Adjust CSS for code (#1933) + + Make font size of code the same as of parent element. + +commit 1bc734ebbf7baf4d1702c6427af64ea21266d0b4 +Merge: df8d016f 90c52536 +Author: Marcus Stollsteimer +Date: Sun Dec 30 23:15:55 2018 +0100 + + Merge pull request #1936 from vnbrs/patch-2 + + Update about/website/index.md with supporting orgs (pt) + +commit df8d016f031f84bcd0f6f7ae567f237ce40c5c01 +Merge: 5373a5a2 8f9e9203 +Author: Marcus Stollsteimer +Date: Sun Dec 30 22:46:28 2018 +0100 + + Merge pull request #1939 from stomar/linter-check-sha-sums + + Add Linter test for SHA sum lengths + +commit 8f9e920331437b698ddb3d1b67faeb6ad3611faa +Author: Marcus Stollsteimer +Date: Sun Dec 30 21:12:05 2018 +0100 + + Fix SHA512 sums in Ruby 2.4.0-preview3 post (pt) + +commit 99880bb4db08c2d3d81d8e3ddfe0c9d1e33b46ab +Author: Marcus Stollsteimer +Date: Sun Dec 30 21:11:18 2018 +0100 + + Fix SHA512 sum in Ruby 2.6.0-rc1 posts + +commit 5a34b3b436e6229a4a40e23be0dbf91b56b1ff3e +Author: Marcus Stollsteimer +Date: Sun Dec 30 21:10:16 2018 +0100 + + Small change in layout of SHA sums in some old posts + + Small format change to avoid Linter errors for some old release posts. + The previous format caused errors because of the seemingly missing + SHA sum (which is given in the following line of the definition list). + Removing the ':' after 'SHA256' makes the Linter ignore these sums. + +commit 51580e535b7246f43a6b2034c9b0d60bed81d64e +Author: Marcus Stollsteimer +Date: Sun Dec 30 21:09:16 2018 +0100 + + Add test for SHA sum lengths + + Check for wrong SHA sum lengths in release posts, an error that + happens from time to time (mainly truncated or wrapped SHA512). + +commit 6144c5c48da1733e46c6675a13d96f8a829ca4b0 +Author: Marcus Stollsteimer +Date: Sun Dec 30 21:08:05 2018 +0100 + + Fix line breaks for SHA sums in some old posts + + Drop nonessential line breaks in markdown source of + some old release posts for easier parsing of SHA sums. + +commit 1ba26514a3b4cbe8e88b71a83e91830a46e20502 +Author: Marcus Stollsteimer +Date: Sun Dec 30 21:07:03 2018 +0100 + + Never exit on errors during Linter test runs + + Always set +exit_on_errors+ to false for Linter test runs, + even for test cases that should not cause errors, to avoid + stopping test runs and silencing (unexpected) error messages + during development. + +commit 2bc187be5366d076dbe9e9f55740c2c82a0bf222 +Author: Marcus Stollsteimer +Date: Sun Dec 30 21:06:13 2018 +0100 + + Add minitest to development group + + For Linter tests with 'bundle exec ruby test/test_linter.rb'. + +commit 5373a5a207681366fbe57108a748c634d37679fe +Author: Marcus Stollsteimer +Date: Sat Dec 29 17:42:33 2018 +0100 + + Fix SHA512 sums in Ruby 2.6.0 post (es) + +commit 092c8c84b823b5925058dfb8da56a2f07d19f5aa +Author: Marcus Stollsteimer +Date: Sat Dec 29 10:02:47 2018 +0100 + + Fix SHA512 sums in Ruby 2.6.0 post (ja) + +commit 90c52536f25a934dcc64c222a460fbd5f0af2c19 +Author: Vinicius Brasil +Date: Fri Dec 28 10:17:47 2018 -0200 + + Update URL reference order to match en version (pt) + +commit fd1ae53d21941dae7423a02bfe49a30b4816b7d6 +Merge: d769dd58 cdb8e2c6 +Author: David Padilla +Date: Thu Dec 27 14:11:39 2018 -0700 + + Merge pull request #1932 from vtamara/es-20181225-ruby-2-6-0 + + Translation of 2018-12-25-ruby-2-6-0-released.md (es) + +commit 506f2a4866e798ce738d3d7bfc0abb047b8dfd52 +Author: Vinicius Brasil +Date: Wed Dec 26 22:14:22 2018 -0200 + + Remove trailing spaces + +commit c97165bbcc493c83a95091f1d64a9be771c3ac5c +Author: Vinicius Brasil +Date: Wed Dec 26 21:12:30 2018 -0200 + + Update about/website/index.md with supporting orgs (pt) + +commit d769dd58e1ee7c69362a16c38a180a18df0a9ef1 +Author: Shia +Date: Thu Dec 27 08:02:12 2018 +0900 + + Follow up 43399ee (#1935) + + Follow up 43399ee (ko) + +commit cdb8e2c6681b1c14632b6675c23024e5c72c28b1 +Author: Vladimir Támara Patiño +Date: Tue Dec 25 16:00:57 2018 -0500 + + Translation of 2018-12-25-ruby-2-6-0-released.md (es) + +commit bc01381b8270d76424eec5b8ee2d4cf7f72af2ea +Merge: c8e9589b fd3d543a +Author: David Padilla +Date: Wed Dec 26 13:03:19 2018 -0700 + + Merge pull request #1923 from vtamara/es-20181215-2-6-0-rc2 + + Translation of 2018-12-15-ruby-2-6-0-rc2-release (es) + +commit c8e9589b9aded39fb96afb91007df388eb36ec31 +Author: Marvin Gülker +Date: Wed Dec 26 13:01:22 2018 +0100 + + Translate 2.6.0 release post (de) + +commit 43399ee7c0dd1a310d839101623d97e1892fe32b +Author: Marcus Stollsteimer +Date: Wed Dec 26 10:02:09 2018 +0100 + + Small improvements in 2.6.0 post (en) + +commit 6f1061ecacb4f2817dce12044118d87a86dfc785 +Author: Marcus Stollsteimer +Date: Wed Dec 26 09:16:41 2018 +0100 + + Fix sha512 sums in Ruby 2.6.0 post (ko) + +commit 26e3629b8b3b855966120960010ec7e491a9a606 +Merge: 2f4cc3e6 fdba9b9b +Author: NARUSE, Yui +Date: Wed Dec 26 17:02:26 2018 +0900 + + Merge pull request #1930 from vnbrs/patch-2 + + Fix Ruby 2.6 release post typo + +commit 2f4cc3e69c51de85655b5ec5600c85b46d3aeaa0 +Merge: c3a14589 e73d4c1b +Author: NARUSE, Yui +Date: Wed Dec 26 17:01:56 2018 +0900 + + Merge pull request #1934 from epistrephein/fix-2.6-branches-status + + Remove duplicate `status` and use expected `date` key for 2.6 branch + +commit c3a145897b03970fa78b469a3ece1c43e234ddf5 +Author: Shia +Date: Wed Dec 26 16:36:45 2018 +0900 + + Translate Ruby 2.6.0 Release (ko) (#1928) + + * Copy from original news + + * Translate Ruby 2.6.0 Release (ko) + + * Apply suggestions from code review + + Co-Authored-By: riseshia + + * More natural explanation + + * Apply Suggestion + + Co-Authored-By: riseshia + +commit a763274efd88580046234bece7dfe0ca51762bff +Author: Marcus Stollsteimer +Date: Wed Dec 26 08:23:07 2018 +0100 + + Fix sha512 sums in Ruby 2.6.0 post (en) + +commit e73d4c1b0e81cc286442069305188aa3392eab81 +Author: epistrephein +Date: Wed Dec 26 08:19:02 2018 +0100 + + Use date key instead of status for release date + +commit 845d4983279672a6c48e4fc45c87a500c70e91f4 +Author: Marcus Stollsteimer +Date: Wed Dec 26 08:17:32 2018 +0100 + + Fix date field for Ruby 2.6 series + +commit fdba9b9bc1c336994bb002b4e7592fcc03290c43 +Author: Vinicius Brasil +Date: Tue Dec 25 14:28:16 2018 -0200 + + Fix Ruby 2.6 release post typo + +commit c1299d04044dba5d9a1a8e917ce420f306817a4d +Author: Delton Ding +Date: Tue Dec 25 22:08:27 2018 +0900 + + Translate Ruby 2.6.0-rc2 released (zh_cn) (#1921) + +commit c3db46db02084897562e0100245d2f746ff34989 +Author: Shia +Date: Tue Dec 25 18:52:44 2018 +0900 + + Translate 2.6.0-rc{1,2} release (ko) (#1924) + + * Copy original news + + * [KO] Translate 2.6.0-rc{1,2} release + + * Fix to use 2.6.0 + + * Follow up f8e7266 + + * Apply suggestions from code review + + Apply reviews + + Co-Authored-By: riseshia + + * Use 11, not 11.0.0 + + * better korean + + Co-Authored-By: riseshia + +commit 68a659ed37888caaf50129d2b862676b0f3b21ee +Author: Shia +Date: Tue Dec 25 17:40:00 2018 +0900 + + Translate fukuoka-ruby-award 2019 (ko) (#1925) + + * Copy original news + + * [KO] Translate fukuoka-ruby-award 2019 + + * s/여러분에게/여러분께/ + + Co-Authored-By: riseshia + + * Better korean + + /대회에 참가하는 것은/대회참가는/ + + * Fix to correct year + + Co-Authored-By: riseshia + + * Fix to correct year (2) + + Co-Authored-By: riseshia + +commit 4b65379f81c3a70eb9d016c9bf67fb112393cbac +Merge: df17fd69 0f574345 +Author: NARUSE, Yui +Date: Tue Dec 25 16:37:40 2018 +0900 + + Merge pull request #1926 from nurse/ruby-2-6-0-released + + Ruby 2.6.0 Released + +commit 0f5743456952e2d28fc9287535cc6e99aaee2530 +Author: NARUSE, Yui +Date: Tue Dec 25 16:26:27 2018 +0900 + + update shortstat + +commit 5739e20f4ac94d577dd80d07b37dcbc93909335a +Author: NARUSE, Yui +Date: Tue Dec 25 16:22:51 2018 +0900 + + fix missing version + +commit 1ad3dd1bff49a12cf92f4741b4119b33dbb4b9ce +Author: NARUSE, Yui +Date: Tue Dec 25 15:55:47 2018 +0900 + + Ruby 2.6.0 Released + +commit df17fd69d1ff4e405c97732e944337f1b8324613 +Author: Marcus Stollsteimer +Date: Mon Dec 24 12:22:13 2018 +0100 + + Improvements in Ruby 2.6.0-rc2 post (de) + +commit fe3c5d73d30c8114949eee92bb8b93551f3d2fc1 +Author: Marcus Stollsteimer +Date: Mon Dec 24 12:16:45 2018 +0100 + + Small improvements in Ruby 2.6.0-rc2 post (en) + +commit f8e7266e51d4ff00e3456d38a58c9f69cb944dfd +Author: Marcus Stollsteimer +Date: Mon Dec 24 12:02:32 2018 +0100 + + Imrovements in Ruby 2.6.0-rc2 post (en) + +commit 764f649e0443af2cd4196f5789b4cf152dd8832d +Author: Shia +Date: Sun Dec 23 22:08:06 2018 +0900 + + [KO] Follow up changes of #1877 (#1879) + + * [KO] Follow up changes of #1877 + + Ref: https://github.com/ruby/www.ruby-lang.org/pull/1877 + + * Add faq + + * Add C API reference + + * Add Atom to list + + * Translate FreeBSD + + Ports Collection from + https://docs.freebsd.org/doc/10.3-RELEASE/usr/local/share/doc/freebsd/ko/articles/contributing/ports-contributing.html + + * Add missing text + + * Use 모하브 as Mojave translation + + * Follow up dc375e4aa909ce78d9cfb019a4a81940086830cf + + * Prefer 가상 머신 than 가상 기기 for virtual machine + + * Fix more + + * Use korean link + +commit d3d96e59317231d25888f5de9e98adeb2315fddd +Author: Marcus Stollsteimer +Date: Fri Dec 21 00:12:46 2018 +0100 + + Fix typos in Ruby 2.6.0-rc2 post (de) + +commit 8c21be1fb4158d28e4e9a3170450c1a5f33d5063 +Author: Marcus Stollsteimer +Date: Fri Dec 21 00:08:11 2018 +0100 + + Imrovements in Ruby 2.6.0-rc2 post (en) + +commit b272b60dfd0fffa1243eaaba5e59cc48a4933aff +Author: Marvin Gülker +Date: Thu Dec 20 16:04:59 2018 +0100 + + Translate 2.6.0-rc2 release (de) + +commit fd3d543a4a7b7434cf4cbf593a74590bc263615c +Author: Vladimir Támara Patiño +Date: Wed Dec 19 14:09:24 2018 -0500 + + Translation of 2018-12-15-ruby-2-6-0-rc2-release (es) + +commit f145587990ad04fed15bf44587a4b43beb87b266 +Author: Marcus Stollsteimer +Date: Sat Dec 15 21:45:57 2018 +0100 + + Small fix in snap post (de) + +commit af2733ed1a439307a483f273b7f09d18574da122 +Author: Marcus Stollsteimer +Date: Sat Dec 15 21:43:06 2018 +0100 + + Various improvements in snap post (en) + +commit eabc38210dbabeea261ab58689f887ef18e94bbe +Author: Marcus Stollsteimer +Date: Sat Dec 15 21:26:09 2018 +0100 + + Rewrap snap post (en) + +commit 805b0a02d7e95a4c857d7d3e80d6c2f7c9cef8a5 +Author: Marcus Stollsteimer +Date: Sat Dec 15 21:11:25 2018 +0100 + + Fix date and link for Ruby 2.6.0-rc1 + +commit 91a70cef90e24623e3f99240a459530991d4e2e5 +Author: Marcus Stollsteimer +Date: Sat Dec 15 21:10:31 2018 +0100 + + Fix typo (zh_cn) + +commit 0a656877802e352b3d333c8e77fd9d32358db2a3 +Author: Marcus Stollsteimer +Date: Sat Dec 15 21:09:40 2018 +0100 + + Add newlines + +commit 9abb25a0d5c5024d7e2cf1d5137e1a72daaeaab9 +Merge: a240d577 3040463f +Author: Marvin Gülker +Date: Sat Dec 15 13:46:20 2018 +0100 + + Merge branch 'translate-2-6-0-rc1-to-de' + +commit 3040463f7ceb8b63f1243413bffe6b90a431958c +Author: Marvin Gülker +Date: Sat Dec 15 13:38:06 2018 +0100 + + Translate 2.6.0-rc1 post (de) + +commit a240d5772c3d4db2958ebfb1f185b73aa6ae5954 +Merge: e52b3008 55e062dd +Author: NARUSE, Yui +Date: Sat Dec 15 21:24:20 2018 +0900 + + Merge pull request #1920 from nurse/ruby-2-6-0-rc2-released + + Ruby 2.6.0-rc2 Released + +commit 55e062dd6d63a4824c311b6c0543cb00008e562a +Author: NARUSE, Yui +Date: Sat Dec 15 20:12:29 2018 +0900 + + fix url and so on + +commit ee2f791f3a4511bfa07ba0f49caa67f092d09d60 +Author: NARUSE, Yui +Date: Sat Dec 15 20:05:36 2018 +0900 + + Ruby 2.6.0-rc2 Released + +commit e52b3008740d2226d01b39da1fb7055eda2abc2c +Merge: 15a19ed6 ed6185f6 +Author: David Padilla +Date: Wed Dec 12 10:20:59 2018 -0600 + + Merge pull request #1917 from vtamara/es-20181206-2-6-0-rc1 + + Translate 2018-12-06-ruby-2-6-0-rc1-released (es) + +commit 15a19ed6d58e849c0eebd939d5fb902495a2a390 +Merge: 117e4b62 e7d2a14d +Author: David Padilla +Date: Wed Dec 12 10:18:17 2018 -0600 + + Merge pull request #1916 from vtamara/es-2018-11-29-fukuoka + + Translation of 2018-11-29-fukuoka-ruby-award-2019.md (es) + +commit ed6185f64c655600613438b30bd56e58deffd514 +Author: Vladimir Támara Patiño +Date: Fri Dec 7 14:30:01 2018 -0500 + + Translate 2018-12-06-ruby-2-6-0-rc1-released.md (es) + +commit e7d2a14d6bc0f1df34e9bb072ba84e19f6d1fe21 +Author: Vladimir Támara Patiño +Date: Fri Dec 7 14:03:26 2018 -0500 + + Translation of 2018-11-29-fukuoka-ruby-award-2019.md (es) + +commit 117e4b62ae59b52b2b098ec4b1d84a8ba671c1b1 +Author: Delton Ding +Date: Tue Dec 11 17:21:17 2018 +0900 + + Translate Ruby 2.6.0-rc1 Released (zh_cn) + +commit 688e5e907c1feee17cf0dacf14f0318fcb5cb329 +Author: Shia +Date: Sun Dec 9 16:30:56 2018 +0900 + + [KO] Remove MacRuby from about page (#1918) + + Follow up https://github.com/ruby/www.ruby-lang.org/pull/1836 + +commit 359bc1955b1c444f2f7d66cedc9515fad5b6f395 +Merge: 4396c61b e10ba235 +Author: David Padilla +Date: Fri Dec 7 12:44:26 2018 -0600 + + Merge pull request #1902 from vtamara/es-20181108-snap + + Translates 2018-11-08-snap.md (es) + +commit e10ba235d53ffdf0a1121e5ab5ece400f3af77e1 +Author: Vladimir Támara Patiño +Date: Fri Dec 7 13:34:15 2018 -0500 + + Fixing urls after https://github.com/ruby/www.ruby-lang.org/pull/1907/files + +commit 4396c61b38868b92aa40ee22a761d099ca390dee +Author: Delton Ding +Date: Fri Dec 7 09:16:57 2018 +0900 + + Fix candidate version number (en) + +commit 93b65db83e16ad070e8997a6f11c2c7021aa2aeb +Author: Shannon Skipper +Date: Thu Dec 6 16:55:00 2018 -0800 + + Fix ruby-2.6.0-rc1 announcement file exts (en, ja) (#1911) + +commit aae76c9f90e6d98fe4d4160192cd6b5ef1da382a +Merge: 3410ff29 b09acaf2 +Author: NARUSE, Yui +Date: Fri Dec 7 02:05:22 2018 +0900 + + Merge pull request #1910 from nurse/ruby-2-6-0-rc1-released + + fix url + +commit b09acaf2f1e8b45f199f20f830ca3387060b467d +Author: NARUSE, Yui +Date: Fri Dec 7 01:58:50 2018 +0900 + + fix url + +commit 3410ff29bf7a33d8522ef585e29b8b57ccbed1b7 +Merge: 1f549080 db778633 +Author: NARUSE, Yui +Date: Fri Dec 7 01:34:58 2018 +0900 + + Merge pull request #1909 from nurse/ruby-2-6-0-rc1-released + + Ruby 2.6.0-rc1 Released + +commit db77863392c0f2143ada28a57d5065c22ce7d24e +Author: NARUSE, Yui +Date: Fri Dec 7 01:14:05 2018 +0900 + + Ruby 2.6.0-rc1 Released + +commit 5435d8686c6999c516bb83ea1bde0394bd8fc043 +Author: Vladimir Támara Patiño +Date: Sun Dec 2 21:53:14 2018 -0500 + + Translates 2018-11-08-snap.md (es) + +commit 1f5490807647b4542b2efd1d7c396ca37e7d8f76 +Author: Andrias Meisyal +Date: Sun Dec 2 14:43:17 2018 +0700 + + Translate Ruby 2.6.0-preview3 released news (id) + +commit cf216f80c92030c15897ec58492dbe430688f241 +Author: Andrias Meisyal +Date: Sat Nov 24 19:59:11 2018 +0700 + + Translate Ruby 2.4.5 released news (id) + +commit e87b7ada205e88c2ff60816cf1665ab2ccfb910f +Author: Delton Ding +Date: Wed Dec 5 20:02:50 2018 +0900 + + Translate snap post (zh_tw) + +commit e0ea92a2f6791610846fc620a75ae5814efc0bc1 +Author: Delton Ding +Date: Wed Dec 5 07:55:00 2018 +0900 + + Translate snap post (zh_cn) + +commit 97ef6910f74bd2b4e635d5c35983798fbe865d46 +Author: Delton Ding +Date: Wed Dec 5 07:53:07 2018 +0900 + + Translate Fukuoka 2019 Post (zh_cn) + +commit fefa8d15cf9dc9e2bc76f4e5b649c9222deb8613 +Author: Delton Ding +Date: Wed Dec 5 17:35:20 2018 +0900 + + Translate 2019 Fukuoka award post (zh_tw) (#1908) + +commit 71e9cb1d67783735784aff0072a1a91926482faf +Merge: 710d49f4 9885c8d8 +Author: SHIBATA Hiroshi +Date: Tue Dec 4 17:33:48 2018 +0900 + + Merge pull request #1907 from olivierlacan/fix-snap-post-links + + Fix links in English Snap post + +commit 9885c8d817e7ffc7074552c523b87e0a70c1d3f4 +Author: Olivier Lacan +Date: Tue Dec 4 07:12:24 2018 +0100 + + Fix links in English Snap post + + See https://github.com/ruby/www.ruby-lang.org/pull/1888#issuecomment-442523867 + + @hsbt, read your GitHub emails! :-p + +commit 710d49f4d217a26b51b8a7202b767312c1c184f5 +Merge: dfa7e9d5 d9ea771e +Author: David Padilla +Date: Mon Dec 3 18:16:14 2018 -0600 + + Merge pull request #1903 from vtamara/fix-es20180620-2-2 + + Translate title of 2018-06-20-support-of-ruby-2-2-has-ended.md + +commit dfa7e9d5249f065ef4cb3b1ae96772bfd54721e2 +Author: Jakob Krigovsky +Date: Wed Oct 3 10:55:33 2018 +0200 + + Update spelling of “macOS” + + Co-Authored-By: Chayoung You + +commit d9ea771e7d2fac445e4d829c21d27bbce6e515f8 +Author: Vladimir Támara Patiño +Date: Sun Dec 2 21:58:13 2018 -0500 + + Translate title + +commit e8ff86f9fe2e6817d8c085bab9dacbba7715e764 +Author: Marvin Gülker +Date: Sun Dec 2 10:46:44 2018 +0100 + + Translate Fukuoka Award 2019 post (de) + +commit 975c8f79dbb5d8b66d0b2326932899fec744dcc3 +Author: Marvin Gülker +Date: Sun Dec 2 10:46:32 2018 +0100 + + Translate snap release post (de) + +commit 4b89845cf6267307dba874ae4ba83c9b21c8da5e +Author: Jakob Krigovsky +Date: Sat Dec 1 01:50:20 2018 +0100 + + Fix typo in installation page (en) (#1878) + +commit 920f53a6716a42b3080fb1818b568c012ba4480b +Author: Olivier Lacan +Date: Sat Dec 1 01:48:30 2018 +0100 + + Update Blog section (en) (#1889) + + Removed several defunct blogs: + - Ruby Inside: last updated in 2014 (4 years ago) + - O'Reilly Ruby: doesn't exist anymore + - Matz' Blog: not updated since 2014 + - Slashdot link, since https://slashdot.org/index2.pl?fhfilter=Ruby + reveals almost no recent mentions of Ruby, Reddit and HN are far more + active these days. + + Added: + - RubyFlow: replacement for Ruby Inside as community-submitted news + - Ruby Weekly: although not a blog, arguably the most popular news + source and since #1465 was a tough sell for a single Newsletter, I + believe it belongs on this list + + Changed: + - the title was "Weblogs" even though the body uses "Blogs", let's be + consistent as "weblog" has fallen out of fashion, or rather has never + been in fashion to begin with: + https://trends.google.com/trends/explore?date=all&geo=US&q=weblog,blog + + Also took the opportunity to replace number-based reference links to + make @stomar happy. Even though he hates my verbose commit messages. <3 + +commit 8bc7b3b42adb4637f7b96cc2b1aa2418814131e4 +Author: Nathaniel Suchy +Date: Fri Nov 30 19:46:31 2018 -0500 + + Improve FAQ1 post (en) (#1900) + + Replace "..." with "and so on" to make the text about OO features consistent with each other + +commit 9f0dd8f2b8500ed486961273214a5200f2e8cc0e +Author: Shannon Skipper +Date: Fri Nov 30 16:44:26 2018 -0800 + + Fix code snippets in snap post (en, ja) (#1899) + + * Switch to markdown style code blocks + * Fix a couple single-character typos + +commit 8f90080fcbde2b840473c56c5ed1d88c342cb695 +Author: digitalfukuoka +Date: Thu Nov 29 17:10:12 2018 +0900 + + Announce Fukuoka Ruby Award 2019 (en) + + Closes #1897 + +commit 14997f783b6545d44ac1c84d5cf97545d354467c +Merge: ef3d7d68 a3c7845c +Author: David Padilla +Date: Wed Nov 28 11:05:05 2018 -0600 + + Merge pull request #1884 from vtamara/es-20181017-2-3-8 + + Translation of 2018-10-17-ruby-2-3-8... (es) + +commit ef3d7d68e046a7fe97eda5327b014dd132c4c0c0 +Merge: 8ca031f9 c9fd17f9 +Author: David Padilla +Date: Wed Nov 28 11:03:41 2018 -0600 + + Merge pull request #1885 from vtamara/es-20181017-ruby-2-5-2 + + Translate 2018-10-17-ruby-2-5-2 (es) + +commit 8ca031f92ee2be8d25273557f4b49fc5d85e807b +Merge: 2d6612d1 9441c217 +Author: David Padilla +Date: Wed Nov 28 11:02:46 2018 -0600 + + Merge pull request #1886 from vtamara/es-20181017-ruby-2-4-5 + + Translation of 2018-10-17-ruby-2-4-5 (es) + +commit 2d6612d167077fca4f24eab2bcc175ace455967f +Merge: 6f135abc 22e442f2 +Author: David Padilla +Date: Wed Nov 28 11:02:00 2018 -0600 + + Merge pull request #1887 from vtamara/es-20181106 + + Translation of 2018-11-06-ruby-2-6-0-preview3 (es) + +commit 6f135abcf14f3adcdaca3d574dc7968cdbfa25e5 +Merge: ed6c0592 7949cbfa +Author: SHIBATA Hiroshi +Date: Wed Nov 28 18:28:15 2018 +0900 + + Merge pull request #1836 from sonicdoe/macruby + + Remove MacRuby from about page + +commit ed6c0592dd0d94bf73434fb3ca8554faf6811b8f +Merge: 725ca8f2 c1685d73 +Author: SHIBATA Hiroshi +Date: Wed Nov 28 18:26:59 2018 +0900 + + Merge pull request #1888 from ruby/snap + + The announcement for snap release. + +commit 22e442f262c90d3aa640d67f4e60f9f551f67a85 +Author: Vladimir Támara Patiño +Date: Tue Nov 20 08:57:02 2018 -0500 + + Translation of 2018-11-06-ruby-2-6-0-preview3 (es) + +commit c9fd17f9054449674dcee108a4b68c62b5d4b9fb +Author: Vladimir Támara Patiño +Date: Tue Nov 20 06:16:20 2018 -0500 + + Translate 2018-10-17-ruby-2-5-2 (es) + +commit 9441c217af23ca500d5df8152111130121facd8c +Author: Vladimir Támara Patiño +Date: Tue Nov 20 06:27:05 2018 -0500 + + Translation of 2018-10-17-ruby-2-4-5 (es) + +commit a3c7845c479508a9951f56e268d8e3eef8d4312f +Author: Vladimir Támara Patiño +Date: Mon Nov 19 20:10:45 2018 -0500 + + Translation of 2018-10-17-ruby-2-3-8... (es) + +commit 725ca8f23667deb76bc452cb1604bc310468b36f +Merge: 3e61e076 6339bcdf +Author: David Padilla +Date: Tue Nov 27 17:20:54 2018 -0600 + + Merge pull request #1876 from vtamara/es-p20180620 + + Translation of 2018-06-20-support-of-ruby-2-2-has-ended (es) + +commit 3e61e076b7b9c1692ed9816cb207c1705f138ba1 +Merge: ecbdd1a6 9257a864 +Author: David Padilla +Date: Tue Nov 27 17:20:05 2018 -0600 + + Merge pull request #1882 from vtamara/es-20181017-openssl + + Translation of 2018-10-17-openssl... (es) + +commit d94052764ce963446260c2e812686bb631e0b2bc +Merge: 5c8f2a52 ecbdd1a6 +Author: Goudarz Jafari +Date: Sun Nov 25 22:46:46 2018 +0330 + + Merge pull request #1 from ruby/master + + update repo + +commit ecbdd1a6dc67164983a85bc8e9796fa63f575872 +Author: Delton Ding +Date: Sat Nov 24 17:24:44 2018 +0900 + + Translate 2.6.0-preview3 post (zh_tw) + +commit dac9be992b7126089e7c380edbd1ffbc2f462389 +Author: Delton Ding +Date: Sun Nov 25 12:56:05 2018 +0900 + + Translate 2.6.0-preview3 posts (zh_cn) (#1890) + +commit c1685d73e98fa33fa641bc37a50082fc90aa04f7 +Author: SHIBATA Hiroshi +Date: Sat Nov 24 08:16:39 2018 +0900 + + Applied 2nd proofreadings by sorah + +commit ac6dda4fba349c25b30d96bf7dbf381e1786c8c1 +Author: SHIBATA Hiroshi +Date: Sat Nov 24 07:59:48 2018 +0900 + + Fixed ja + +commit 92c9a69df277e9eff33250305c49605b51036d2b +Author: SHIBATA Hiroshi +Date: Fri Nov 23 20:49:12 2018 +0900 + + Added option for pristine + +commit 1b0f6c1fb8a6286d790f05ae38d0c64b63daef34 +Author: SHIBATA Hiroshi +Date: Thu Nov 22 22:20:59 2018 +0900 + + Added install section + +commit 4af88f51d3833fc4a54b34373da1f1dbe8fa3863 +Author: SHIBATA Hiroshi +Date: Thu Nov 22 22:14:04 2018 +0900 + + Applied proofreadings by sorah + +commit 4ac65426ec1a18dc31e2e97066978dbc580577e6 +Author: SHIBATA Hiroshi +Date: Wed Nov 21 12:20:25 2018 +0900 + + Rename and added contents for snap release. + +commit 6dc64debbff746866d160cf58d6c6c8753a749c6 +Author: SHIBATA Hiroshi +Date: Thu Nov 8 15:48:09 2018 +0000 + + rake new_post:en + +commit b26c5feb4b07fc603c3c64c94cd90cacd6a4aee1 +Author: Olivier Lacan +Date: Wed Sep 21 19:01:14 2016 -0400 + + Add Podcasts section to Community + + Includes Ruby Rogues and the Ruby on Rails Podcast since they're the + most prominent Ruby-related podcasts in English but I'm sure there might + be more in other languages. + +commit ab1d3634ea9817e1058df73a63a0628a0c4dbb8c +Author: Júlio Campos +Date: Thu Oct 4 11:41:04 2018 -0300 + + Translate Ruby 2.5.0 Release post (pt) + + Closes #1840 + +commit e026493f66d5a77d7e01e83f9fbb7fe3bc0cf328 +Author: Zane Alexander +Date: Mon Nov 19 20:02:00 2018 -0500 + + Translate ruby 2.5.1 release (es) (#1883) + + + Co-Authored-By: ZASMan + +commit 8dd2e9d694d50f399c382fc196206cdd3835c34b +Merge: 48ded006 ef0b15f6 +Author: Gustavo Villa +Date: Mon Nov 19 17:11:06 2018 -0300 + + Merge pull request #1881 from vtamara/es-20181017-not-propagated + + Translate 2018-10-17-not-propagated... (es) + +commit 9257a86496beda18ec9f603b25822192cb63fcab +Author: Vladimir Támara Patiño +Date: Mon Nov 19 09:36:03 2018 -0500 + + Translation of 2018-10-17-openssl... (es) + +commit ef0b15f6311b0c7be5c01cc2f57aaeb06bcc9060 +Author: Vladimir Támara Patiño +Date: Mon Nov 19 06:54:03 2018 -0500 + + Translate 2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md (es) + +commit 48ded006d8fddd843449897553895be571259a73 +Merge: 769fad06 1f6e5aaa +Author: Juanito Fatas +Date: Fri Nov 16 09:01:25 2018 +0900 + + Update Documentation and Installation pages (en) + + Merge pull request #1877 from olivierlacan/official-api-docs + +commit 1f6e5aaa2ebc6fb6a7b47b09f8e1b5cd74064bc2 +Author: Olivier Lacan +Date: Thu Nov 15 13:08:09 2018 -0500 + + No one says Weblogs anymore + +commit c06bd27c56fd5c4c170e8c876d0a8a01fcd80b90 +Author: Olivier Lacan +Date: Thu Nov 15 13:07:59 2018 -0500 + + Clean up and update Installation guide + + There were a lot of outdated (and many may still remain) + pieces of information in this guide and it was often + needllessly verbose. + + I cut down on unnecessary copy, added relevant internal + and external links, etc. + +commit e01e69935f69250f279076b718eae5d9f71cf817 +Author: Olivier Lacan +Date: Thu Nov 15 13:06:45 2018 -0500 + + Add listing for the official API documentation + + I was surprised not to find these listed anywhere even + though it is the official documentation built from source + and hosted on ruby-lang.org + + Third parties are fine, but we shouldn’t link to third parties + only if we offer this resource already. + +commit f3133b0d408a3ef6e040a0f485f34798245caae3 +Author: Olivier Lacan +Date: Thu Nov 15 13:05:37 2018 -0500 + + Remove redundant listing of Getting Started links + + These links are already available on every single page of + the site in the sidebar, there’s no need to repeat them here. + +commit 4d615d4670d78f9108fea1cd8e21c738ae8da365 +Author: Olivier Lacan +Date: Thu Nov 15 13:05:03 2018 -0500 + + Don’t linger on installation in documentation + + There’s no reason to spend so much time talking about + installing Ruby or the command line on a page dedicated + to documentation. We can refer people directly to the + installation page which is much better suited to this. + +commit f971262255a484eddefe53bf545a7848d3939646 +Author: Olivier Lacan +Date: Thu Nov 15 12:30:07 2018 -0500 + + Simplify introductory copy for Documentation + +commit 769fad0683360f8c3b8f7d1e2f0b41dae8d21238 +Author: SADIK KUZU +Date: Wed Nov 14 08:54:32 2018 +0300 + + Fix typos on about page (tr) (#1853) + +commit b420c7a309f48d5c1289b44aeb72dab0188e621b +Author: Juanito Fatas +Date: Tue Jul 24 11:36:58 2018 -0400 + + Add CODEOWNERS to enable auto review + +commit 6339bcdf3a2a2d98dc3a8402e11280282f4feff2 +Author: Vladimir Támara Patiño +Date: Mon Nov 12 14:39:17 2018 -0500 + + Translation of 2018-06-20-support-of-ruby-2-2-has-ended (es) + +commit 7b4204df3a82f0a985ccccd3326e088d596c111d +Author: Delton Ding +Date: Mon Nov 12 20:15:38 2018 +0900 + + Update installation page (zh_cn) (#1709) + +commit f7db758124585bf135214ccc013a488b844903e7 +Author: Vagish Vela +Date: Mon Nov 12 06:12:41 2018 -0500 + + Fix links in first FAQ Page (en) (#1850) + + * Update location of TextPad Ruby definition + + The old location was heading to a 404 error, this is the new location. + + * Remove the Jed editor from FAQ page 1 + + The s-lang file supporting Ruby is no longer maintained and is un-findable + on kondara.org. + +commit 06b03c9e7d90d0fd9b83799cf295b74b08882339 +Author: Marvin Gülker +Date: Sun Nov 11 20:59:12 2018 +0100 + + Translate most recent news (de) + +commit 6a0d4b798e97b4023b7617aa13bf297bd2d5e08a +Author: Kazuhiro NISHIYAMA +Date: Fri Nov 9 11:09:44 2018 +0900 + + Fix link to gist in 2.6.0-preview3 posts (en, ja) (#1871) + +commit 819c16c7413e74e8120164700d6ee4c36072aade +Author: Jordanlelay <43350109+Jordanlelay@users.noreply.github.com> +Date: Thu Nov 8 10:52:28 2018 +0100 + + Fix typo on librairies page (fr) + +commit 5a6ce58017626f02ce26716725072b09fc1f1d1a +Author: Jordanlelay <43350109+Jordanlelay@users.noreply.github.com> +Date: Fri Nov 9 02:14:45 2018 +0100 + + Fix typo and wording on community page (fr) (#1874) + +commit 7209524caf6b2a6b49543c0088f3aff851c287a2 +Author: SHIBATA Hiroshi +Date: Thu Nov 8 14:53:38 2018 +0000 + + update bundles + +commit d9f4a07ed395e9f7f418dc5d69a4d57a80a88249 +Author: Shia +Date: Thu Nov 8 22:11:49 2018 +0900 + + [KO] Translate 2018-11-06-ruby-2-6-0-preview3-released.md (#1872) + + * cp {en,ko}/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md + + * Translate ruby 2.6.0-preview3 + + * Copy oneshot coverage explanation + + * Translate oneshot coverage + + * Fix translation + +commit fedb65aadece57a7c39b44488934020dd25e0137 +Author: Shia +Date: Thu Nov 8 22:03:50 2018 +0900 + + %s/메소드/메서드/g (#1875) + + Ref: http://www.korean.go.kr/front/onlineQna/onlineQnaView.do?mn_id=61&qna_seq=11976 + +commit da95fa07c90ae7fe46bc3aca8b0ce0b7cd669d65 +Merge: cd44e1f7 d8b54ea2 +Author: NARUSE, Yui +Date: Wed Nov 7 00:39:00 2018 +0900 + + Merge pull request #1870 from ruby/ruby-2-6-0-preview3-released + + Ruby 2.6.0-preview3 Released + +commit d8b54ea2067eaa7cd30dd228a62999022916d0a6 +Author: NARUSE, Yui +Date: Wed Nov 7 00:30:54 2018 +0900 + + fix typos pointed by znz + +commit b540819f92cdecf421c45c018579bec9ee8b476e +Author: nagachika +Date: Wed Nov 7 00:20:25 2018 +0900 + + Update ja/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md + + Co-Authored-By: nurse + +commit 0e1f856d4b222335624d7a02a69b864e6ab57e24 +Author: nagachika +Date: Wed Nov 7 00:20:20 2018 +0900 + + Update en/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md + + Co-Authored-By: nurse + +commit 266fdf6d169d3247cf86afa15a307345300b45cb +Author: nagachika +Date: Wed Nov 7 00:20:10 2018 +0900 + + Update en/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md + + Co-Authored-By: nurse + +commit 540d4993faad50f14c1781b3a7419453fdfded48 +Author: NARUSE, Yui +Date: Tue Nov 6 22:09:00 2018 +0900 + + Ruby 2.6.0-preview3 Released + +commit cd44e1f7820e77b567ccb95bdf411deb7b4e32f0 +Author: Andrias Meisyal +Date: Fri Nov 2 20:04:40 2018 +0700 + + Translate Ruby 2.5.2 released news (id) + +commit b104504ad5f83ecf43cb70e05704d3c2ab09ced2 +Author: Marcus Stollsteimer +Date: Sun Nov 4 09:32:40 2018 +0100 + + Remove dead link to digg programming page (id) + +commit 49db8a28370b9a6897064dcb58231cddfcdbc957 +Author: Marcus Stollsteimer +Date: Fri Nov 2 20:08:36 2018 +0100 + + Fix typo (pl) + +commit 48e3a8eebc3e93c486458dd563ff1d43b5cd8498 +Author: Marcus Stollsteimer +Date: Fri Nov 2 19:55:16 2018 +0100 + + Partially revert "Remove link to digg programming page..." + + This partially reverts commit b6bd84fb9c279e96ade8321e2016ee89bbfd5b88. + For `id' and `pl' the number of mentioned sites changes from plural + to singular, and I'm not convinced that the grammar is still correct. + Better an obviously outdated paragraph than a subtle error that is + likely to stay unnoticed. diff --git a/fa/about/index.md b/fa/about/index.md new file mode 100644 index 0000000000..3cc558561e --- /dev/null +++ b/fa/about/index.md @@ -0,0 +1,240 @@ +--- +layout: page +title: "درباره روبی" +lang: fa +--- + +Wondering why Ruby is so popular? Its fans call it a beautiful, artful +language. And yet, they say it’s handy and practical. What gives? +{: .summary} + +### The Ideals of Ruby’s Creator + +Ruby is a language of careful balance. Its creator, [Yukihiro “Matz” +Matsumoto][matz], blended parts of his favorite languages (Perl, Smalltalk, +Eiffel, Ada, and Lisp) to form a new language that balanced functional +programming with imperative programming. + +He has often said that he is “trying to make Ruby natural, not simple,” +in a way that mirrors life. + +Building on this, he adds: + +> Ruby is simple in appearance, but is very complex inside, just like +> our human body[1](#fn1). + +### About Ruby’s Growth + +Since its public release in 1995, Ruby has drawn devoted coders +worldwide. In 2006, Ruby achieved mass acceptance. With active user +groups formed in the world’s major cities and Ruby-related conferences +filled to capacity. + +Ruby-Talk, the primary [mailing list](/en/community/mailing-lists/) for +discussion of the Ruby language, climbed to an average of 200 messages +per day in 2006. It has dropped in recent years as the size of the +community pushed discussion from one central list into many smaller +groups. + +Ruby is ranked among the top 10 on most of the indices that measure +the growth and popularity of programming languages worldwide +(such as the [TIOBE index][tiobe]). Much of the growth is attributed to the +popularity of software written in Ruby, particularly the +[Ruby on Rails][ror] web framework. + +Ruby is also [completely free]({{ site.license.url }}). Not only free of charge, but +also free to use, copy, modify, and distribute. + +### Seeing Everything as an Object + +Initially, Matz looked at other languages to find an ideal syntax. +Recalling his search, he said, “I wanted a scripting language that was +more powerful than Perl, and more object-oriented than +Python[2](#fn2).” + +In Ruby, everything is an object. Every bit of information and code can +be given their own properties and actions. Object-oriented programming +calls properties by the name *instance variables* and actions are known +as *methods*. Ruby’s pure object-oriented approach is most commonly +demonstrated by a bit of code which applies an action to a number. + +{% highlight ruby %} +5.times { print "We *love* Ruby -- it's outrageous!" } +{% endhighlight %} + +In many languages, numbers and other primitive types are not objects. +Ruby follows the influence of the Smalltalk language by giving methods +and instance variables to all of its types. This eases one’s use of +Ruby, since rules applying to objects apply to all of Ruby. + +### Ruby’s Flexibility + +Ruby is seen as a flexible language, since it allows its users to freely +alter its parts. Essential parts of Ruby can be removed or redefined, at +will. Existing parts can be added upon. Ruby tries not to restrict the +coder. + +For example, addition is performed with the plus (`+`) operator. But, if +you’d rather use the readable word `plus`, you could add such a method +to Ruby’s builtin `Numeric` class. + +{% highlight ruby %} +class Numeric + def plus(x) + self.+(x) + end +end + +y = 5.plus 6 +# y is now equal to 11 +{% endhighlight %} + +Ruby’s operators are syntactic sugar for methods. You can redefine them +as well. + +### Blocks: a Truly Expressive Feature + +Ruby’s block are also seen as a source of great flexibility. A +programmer can attach a closure to any method, describing how that +method should act. The closure is called a *block* and has become one of +the most popular features for newcomers to Ruby from other imperative +languages like PHP or Visual Basic. + +Blocks are inspired by functional languages. Matz said, “in Ruby +closures, I wanted to respect the Lisp culture[3](#fn3).” + +{% highlight ruby %} +search_engines = + %w[Google Yahoo MSN].map do |engine| + "http://www." + engine.downcase + ".com" + end +{% endhighlight %} + +In the above code, the block is described inside the `do ... end` +construct. The `map` method applies the block to the provided list of +words. Many other methods in Ruby leave a hole open for a coder to write +their own block to fill in the details of what that method should do. + +### Ruby and the Mixin + +Unlike many object-oriented languages, Ruby features single inheritance +only, **on purpose**. But Ruby knows the concept of modules (called +Categories in Objective-C). Modules are collections of methods. + +Classes can mixin a module and receive all its methods for free. For +example, any class which implements the `each` method can mixin the +`Enumerable` module, which adds a pile of methods that use `each` for +looping. + +{% highlight ruby %} +class MyArray + include Enumerable +end +{% endhighlight %} + +Generally, Rubyists see this as a much clearer way than multiple +inheritance, which is complex and can be too restrictive. + +### Ruby’s Visual Appearance + +While Ruby often uses very limited punctuation and usually prefers +English keywords, some punctuation is used to decorate Ruby. Ruby needs +no variable declarations. It uses simple naming conventions to denote +the scope of variables. + +* `var` could be a local variable. +* `@var` is an instance variable. +* `$var` is a global variable. + +These sigils enhance readability by allowing the programmer to easily +identify the roles of each variable. It also becomes unnecessary to use +a tiresome `self.` prepended to every instance member. + +### Beyond the Basics + +Ruby has a wealth of other features, among which are the following: + +* Ruby has exception handling features, like Java or Python, to make it + easy to handle errors. + +* Ruby features a true mark-and-sweep garbage collector for all Ruby + objects. No need to maintain reference counts in extension libraries. + As Matz says, “This is better for your health.” + +* Writing C extensions in Ruby is easier than in Perl or Python, with a + very elegant API for calling Ruby from C. This includes calls for + embedding Ruby in software, for use as a scripting language. A SWIG + interface is also available. + +* Ruby can load extension libraries dynamically if an OS allows. + +* Ruby features OS independent threading. Thus, for all platforms on + which Ruby runs, you also have multithreading, regardless of if the OS + supports it or not, even on MS-DOS! + +* Ruby is highly portable: it is developed mostly on GNU/Linux, but + works on many types of UNIX, macOS, Windows, DOS, BeOS, OS/2, etc. + +### Other Implementations of Ruby + +Ruby, as a language, has a few different implementations. +This page has been discussing the reference implementation, in the +community often referred to as **MRI** (“Matz’s Ruby Interpreter”) +or **CRuby** (since it is written in C), but there are also others. +They are often useful in certain situations, provide extra +integration to other languages or environments, or have special features +that MRI doesn’t. + +Here’s a list: + +* [JRuby][jruby] is Ruby atop the JVM (Java Virtual Machine), utilizing the + JVM’s optimizing JIT compilers, garbage collectors, concurrent + threads, tool ecosystem, and vast collection of libraries. +* [Rubinius][rubinius] is ‘Ruby written in Ruby’. Built on top of LLVM, + Rubinius sports a nifty virtual machine that other languages are being + built on top of, too. +* [TruffleRuby][truffleruby] is a high performance Ruby implementation on top of + GraalVM. +* [mruby][mruby] is a lightweight implementation of the Ruby language + that can be linked and embedded within an application. + Its development is led by Ruby’s creator Yukihiro “Matz” Matsumoto. +* [IronRuby][ironruby] is an implementation “tightly integrated with the .NET + Framework”. +* [MagLev][maglev] is “a fast, stable, Ruby implementation with integrated + object persistence and distributed shared cache”. +* [Cardinal][cardinal] is a “Ruby compiler for [Parrot][parrot] Virtual Machine” + (Perl 6). + +For a more complete list, see [Awesome Rubies][awesome-rubies]. + +### References + +1 Matz, speaking on the Ruby-Talk mailing list, [May 12th, +2000][blade]. +{: #fn1} + +2 Matz, in [An Interview with the Creator of Ruby][linuxdevcenter], Nov. +29th, 2001. +{: #fn2} + +3 Matz, in [Blocks and Closures in Ruby][artima], December 22nd, +2003. +{: #fn3} + + + +[matz]: http://www.rubyist.net/~matz/ +[blade]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2773 +[ror]: http://rubyonrails.org/ +[linuxdevcenter]: http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html +[artima]: http://www.artima.com/intv/closures2.html +[tiobe]: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html +[jruby]: http://jruby.org +[rubinius]: http://rubini.us +[truffleruby]: https://github.com/oracle/truffleruby +[mruby]: http://www.mruby.org/ +[ironruby]: http://www.ironruby.net +[maglev]: http://maglev.github.io +[cardinal]: https://github.com/parrot/cardinal +[parrot]: http://parrot.org +[awesome-rubies]: https://github.com/planetruby/awesome-rubies diff --git a/fa/about/license.txt b/fa/about/license.txt new file mode 100644 index 0000000000..426810a7fb --- /dev/null +++ b/fa/about/license.txt @@ -0,0 +1,56 @@ +Ruby is copyrighted free software by Yukihiro Matsumoto . +You can redistribute it and/or modify it under either the terms of the +2-clause BSDL (see the file BSDL), or the conditions below: + + 1. You may make and give away verbatim copies of the source form of the + software without restriction, provided that you duplicate all of the + original copyright notices and associated disclaimers. + + 2. You may modify your copy of the software in any way, provided that + you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise + make them Freely Available, such as by posting said + modifications to Usenet or an equivalent medium, or by allowing + the author to include your modifications in the software. + + b) use the modified software only within your corporation or + organization. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the author. + + 3. You may distribute the software in object code or binary form, + provided that you do at least ONE of the following: + + a) distribute the binaries and library files of the software, + together with instructions (in the manual page or equivalent) + on where to get the original distribution. + + b) accompany the distribution with the machine-readable source of + the software. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the author. + + 4. You may modify and include the part of the software into any other + software (possibly commercial). But some files in the distribution + are not written by the author, so that they are not under these terms. + + For the list of those files and their copying conditions, see the + file LEGAL. + + 5. The scripts and library files supplied as input to or produced as + output from the software do not automatically fall under the + copyright of the software, but belong to whomever generated them, + and may be sold commercially, and may be aggregated with this + software. + + 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. diff --git a/fa/about/logo/index.md b/fa/about/logo/index.md new file mode 100644 index 0000000000..c9505d798c --- /dev/null +++ b/fa/about/logo/index.md @@ -0,0 +1,22 @@ +--- +layout: page +title: "لوگوی روبی" +lang: fa +--- + +![لوگوی روبی][logo] + +کپی‌رایت لوگوی روبی © ۲۰۰۶، یوکیهیرو ماتسوموتو. + +این مجوز تحت شرایط +[مجوز کرییتیو کامنز اشتراک همسان ۲٫۵][cc-by-sa] است. + + +## دانلود + +[کیت لوگوی روبی][logo-kit] شامل لوگو روبی در فرمت‌های مختلف (PNG, JPG, PDF, AI, SWF, XAR). + + +[logo]: /images/header-ruby-logo.png +[logo-kit]: https://cache.ruby-lang.org/pub/misc/logo/ruby-logo-kit.zip +[cc-by-sa]: https://creativecommons.org/licenses/by-sa/2.5/deed.fa diff --git a/fa/about/website/index.md b/fa/about/website/index.md new file mode 100644 index 0000000000..39f6ca51a6 --- /dev/null +++ b/fa/about/website/index.md @@ -0,0 +1,60 @@ +--- +layout: page +title: "درباره وب‌سایت روبی" +lang: fa +--- + +این وب‌سایت توسط روبی با استفاده از [جکیل][jekyll] تولید شده است،
+سورس آن در [گیت‌هاب][github-repo] میزبانی می‌شود. + +طراحی بصری توسط [جیسون زیمدرس][jzimdars].
+براساس طراحی قبلی توسط تیم هویت بصری روبی. + +کپی رایت [لوگوی روبی][logo] © ۲۰۰۶، یوکیهیرو ماتسوموتو. + + +## گزارش مشکلات ## + + برای گزارش مشکل، از سیستم [ردیاب موضوع][github-issues] استفاده کنید یا با [مدیر وب‌سایت][webmaster] ما تماس بگیرید (به زبان انگلیسی). + + +## چگونه مشارکت کنیم ## + +این وب‌سایت با افتخار توسط اعضای جامعه روبی نگهداری می‌شود. + +اگر می‌خواهید مشارکت کنید، [دستورالعمل‌های مشارکت][github-wiki] را بخوانید و فقط شروع به باز کردن issue یا pull request کنید! + + +## تقدیرنامه‌ها ## + +ما از همه متعهدین، نویسندگان، مترجمان و دیگر مشارکت کنندگان این وب‌سایت سپاسگزاریم. + +همچنین از سازمان‌هایی که از ما حمایت می‌کنند سپاسگزاریم: + + * [Ruby Association][rubyassociation] (میزبانی) + * [Heroku][heroku] (میزبانی) + * [IIJ][iij] (میزبانی) + * [GlobalSign][globalsign] (گواهینامه SSL) + * [Fastly][fastly] (CDN) + * [Hatena][hatena] ([mackerel][mackerel]، نظارت بر سرور) + * [![CloudCore][cloudcore-logo] CloudCore][cloudcore] (ساخت سرور) + * [Ruby no Kai][rubynokai] (ساخت سرور) + + +[logo]: /fa/about/logo/ +[webmaster]: mailto:webmaster@ruby-lang.org +[jekyll]: http://www.jekyllrb.com/ +[jzimdars]: https://twitter.com/jasonzimdars +[github-repo]: https://github.com/ruby/www.ruby-lang.org/ +[github-issues]: https://github.com/ruby/www.ruby-lang.org/issues +[github-wiki]: https://github.com/ruby/www.ruby-lang.org/wiki +[rubyassociation]: http://www.ruby.or.jp +[heroku]: https://www.heroku.com/ +[iij]: http://www.iij.ad.jp +[globalsign]: https://www.globalsign.com +[fastly]: http://www.fastly.com +[hatena]: http://hatenacorp.jp/ +[mackerel]: https://mackerel.io/ +[cloudcore]: http://www.cloudcore.jp/?utm_source=ad&utm_medium=ad&utm_content=dev&utm_campaign=vps +[cloudcore-logo]: http://www.cloudcore.jp/develop/links/images/74x36_white.gif +[rubynokai]: http://ruby-no-kai.org/ diff --git a/fa/community/conferences/index.md b/fa/community/conferences/index.md new file mode 100644 index 0000000000..14ef1f3c2e --- /dev/null +++ b/fa/community/conferences/index.md @@ -0,0 +1,89 @@ +--- +layout: page +title: "Ruby Conferences" +lang: fa +--- + +Ruby programmers around the world are getting involved in more and more +conferences, where they get together to share reports on +work-in-progress, discuss the future of Ruby, and welcome newcomers to +the Ruby community. + +[RubyConferences.org][rc] is a simple list of Ruby-specific conferences, +published collaboratively with the Ruby community. There you will find +event dates, location, CFP (Call For Proposals) and Registration information. + +### Major Ruby Conferences + +[RubyConf][1] +: Every year since 2001, [Ruby Central, Inc.][2] has produced RubyConf, + the International Ruby conference. Attendance grew by a factor of ten + between 2001 and 2006. RubyConf has provided a forum for presentations + about Ruby technologies by their creators, including talks by + Nathaniel Talbot on Test Unit, Jim Weirich on Rake, David Heinemeier + Hansson on Ruby on Rails, Why the Lucky Stiff on the YAML library, and + Sasada Koichi on YARV. Matz has attended, and spoken at, all the + RubyConfs but one. + +[RubyKaigi][3] +: The first Japanese Ruby conference, RubyKaigi 2006, took place in + Odaiba. RubyKaigi provides many new and exciting talks by Matz and + other Rubyists in every year. + +[EuRuKo (European Ruby Conference)][4] +: The first annual European Ruby Conference (EuRuKo) was held in + Karlsruhe, Germany, in 2003. Organized by a team of German Rubyists + including Armin Roehrl and Michael Neumann, EuRuKo emerged as the + second annual Ruby event, starting two years after RubyConf. + +### Regional Ruby Conferences + +[Ruby Central][2] administers a [Regional Conference Grant Program][6], +to offset expenses for local and regional groups wanting to organize +events. + +Ruby Central has also teamed up with [SVForum][7] (previously known as SDForum) +to produce the Silicon Valley Ruby Conference, entering its second year in 2007. + +[RubyNation][8] is an annual Ruby conference serving the Virginia, West +Virginia, Maryland, and Washington, DC areas. + +[WindyCityRails][9] is an annual gathering for all who are passionate about +Ruby on Rails. The Chicago-based conference has served the Ruby +community since 2008. + +[Steel City Ruby][16]: Pittsburg, PA + +[GoRuCo][19]: New York City's annual Ruby conference. A one-day single-track conference. + +[DeccanRubyConf][20]: Pune's (India) annual Ruby conference, +themed around fun activities filled around the day. +It is a single-day single-track conference. + +### Ruby At Other Conferences + +There has been a Ruby track at the [O’Reilly Open Source Conference][10] +(OSCON) since 2004, and an increasing presence on the part of Ruby and +Rubyists at other non-Ruby-specific gatherings. A number of conferences +have also been devoted to [Ruby on Rails][11], including Ruby Central’s +[RailsConf][12], [RailsConf Europe][13] (co-produced in 2006 by Ruby +Central and [Skills Matter][14], and in 2007 by Ruby Central and +O’Reilly), and Canada on Rails. + +[rc]: http://rubyconferences.org/ +[1]: http://rubyconf.org/ +[2]: http://rubycentral.org +[3]: http://rubykaigi.org/ +[4]: http://euruko.org +[6]: http://rubycentral.org/community/grant +[7]: http://www.svforum.org +[8]: http://rubynation.org/ +[9]: http://windycityrails.org +[10]: http://conferences.oreillynet.com/os2006/ +[11]: http://www.rubyonrails.org +[12]: http://www.railsconf.org +[13]: http://europe.railsconf.org +[14]: http://www.skillsmatter.com +[16]: http://steelcityruby.org/ +[19]: http://goruco.com/ +[20]: http://www.deccanrubyconf.org/ diff --git a/fa/community/index.md b/fa/community/index.md new file mode 100644 index 0000000000..c6b6ea651e --- /dev/null +++ b/fa/community/index.md @@ -0,0 +1,59 @@ +--- +layout: page +title: "Community" +lang: fa +--- + +The community that grows up around a programming language is one of its +most important strengths. Ruby has a vibrant and growing community that +is friendly towards people of all skill levels. +{: .summary} + +If you are interested in getting involved, here are a couple of places +to start: + +[Ruby User Groups](user-groups/) +: Your local Ruby user group is a great place to network with other Ruby + programmers. Ruby user groups are self-organizing and typically + feature monthly meetings, a mailing list, a Web site, and if you are + lucky, frequent codefests. + +[Ruby Mailing Lists and Newsgroups](mailing-lists/) +: Ruby has an assortment of lists on different topics and in several + languages. If you have questions about Ruby, asking them on a mailing + list is a great way to get answers. + +[Ruby on IRC (#ruby)](irc://irc.freenode.net/ruby) +: The Ruby Language IRC Channel is a wonderful way to chat with fellow + Rubyists. + +[Ruby Core](ruby-core/) +: Now is a fantastic time to follow Ruby’s development. + If you are interested in helping with Ruby, start here. + +[Ruby Blogs](weblogs/) +: Very little happens in the Ruby community that is not talked about on + the blogs. We’ve got a nice list of suggestions for you here for + getting plugged in. + +[Ruby Conferences](conferences/) +: Ruby programmers around the world are getting involved in more and + more conferences, where they get together to share reports on + work-in-progress, discuss the future of Ruby, and welcome newcomers to + the Ruby community. + +[Podcasts](podcasts/) +: If you like to hear about Ruby rather than read about you can listen + to podcasts which cover new Ruby or gem releases, interviews and + discussions between Ruby programmers, contributors, and maintainers. + +General Ruby Information +: * [Ruby Central][ruby-central] + * [Ruby at Open Directory Project][ruby-opendir] + * [Rails at Open Directory Project][rails-opendir] + + + +[ruby-central]: http://rubycentral.org/ +[ruby-opendir]: https://dmoztools.net/Computers/Programming/Languages/Ruby/ +[rails-opendir]: https://dmoztools.net/Computers/Programming/Languages/Ruby/Software/Frameworks/Rails/ diff --git a/fa/community/mailing-lists/index.md b/fa/community/mailing-lists/index.md new file mode 100644 index 0000000000..e4e4c20d35 --- /dev/null +++ b/fa/community/mailing-lists/index.md @@ -0,0 +1,49 @@ +--- +layout: page +title: "Mailing Lists" +lang: fa +--- + +Mailing-lists are a great way to keep your finger on the pulse of the +Ruby community. +{: .summary} + +Ruby has four primary English speaking mailing lists: + +Ruby-Talk +: This is the most popular mailing-list and deals with general topics + about Ruby. ([Archives][3], [Posting Guidelines][guidelines]) + +Ruby-Core +: This list deals with core and implementation topics about Ruby, often + used to run patches for review. ([Archives][4]) + +Ruby-Doc +: This list is for discussing documentation standards and tools for + Ruby. ([Archives][5]) + +Ruby-CVS +: This list reports all commits to Ruby’s Subversion repository. + +The comp.lang.ruby Newsgroup +: Those who prefer Usenet over mailing lists will want to checkout the + [comp.lang.ruby](news:comp.lang.ruby) newsgroup. ([FAQ][clrFAQ]) + +See [lists.ruby-lang.org](http://lists.ruby-lang.org) +for more information about all mailing lists on ruby-lang.org, +including the lists in Japanese language. + +## Subscribe or Unsubscribe + +{% include subscription-form.html %} + +If you fail to receive a confirmation e-mail using the form, try +subscribing the [manual way](manual-instructions/). + + + +[guidelines]: ruby-talk-guidelines/ +[clrFAQ]: http://rubyhacker.com/clrFAQ.html +[3]: http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml +[4]: http://blade.nagaokaut.ac.jp/ruby/ruby-core/index.shtml +[5]: http://lists.ruby-lang.org/pipermail/ruby-doc/ diff --git a/fa/community/mailing-lists/manual-instructions/index.md b/fa/community/mailing-lists/manual-instructions/index.md new file mode 100644 index 0000000000..73cccf8d4a --- /dev/null +++ b/fa/community/mailing-lists/manual-instructions/index.md @@ -0,0 +1,62 @@ +--- +layout: page +title: "Manual Mailing List Instructions" +lang: fa +--- + +NOTE: If you cannot subscribe, please refer to +[lists.ruby-lang.org](http://lists.ruby-lang.org). + +To subscribe to a mailing list, please send a plain text mail +with the following mail body (not the subject) to the automated +“controller” address: + + subscribe +{: .code} + +Ruby-Talk +: For the Ruby-Talk list, the controller address is + [ruby-talk-request@ruby-lang.org](mailto:ruby-talk-request@ruby-lang.org), the + posting address is + [ruby-talk@ruby-lang.org](mailto:ruby-talk@ruby-lang.org), and the + human administrator address is + [ruby-talk-owner@ruby-lang.org](mailto:ruby-talk-owner@ruby-lang.org). + +Ruby-Core +: For the Ruby-Core list, the controller address is + [ruby-core-request@ruby-lang.org](mailto:ruby-core-request@ruby-lang.org), the + posting address is + [ruby-core@ruby-lang.org](mailto:ruby-core@ruby-lang.org), and the + “human” administrator address is + [ruby-core-owner@ruby-lang.org](mailto:ruby-core-owner@ruby-lang.org). + +Ruby-Doc +: For the Ruby-Doc list, the controller address is + [ruby-doc-request@ruby-lang.org](mailto:ruby-doc-request@ruby-lang.org), the + posting address is + [ruby-doc@ruby-lang.org](mailto:ruby-doc@ruby-lang.org), and the + “human” administrator address is + [ruby-doc-owner@ruby-lang.org](mailto:ruby-doc-owner@ruby-lang.org). + +Ruby-CVS +: For the Ruby-CVS list, the controller address is + [ruby-cvs-request@ruby-lang.org](mailto:ruby-cvs-request@ruby-lang.org), the + posting address is + [ruby-cvs@ruby-lang.org](mailto:ruby-cvs@ruby-lang.org), and the + “human” administrator address is + [ruby-cvs-owner@ruby-lang.org](mailto:ruby-cvs-owner@ruby-lang.org). + +### Unsubscribing + +To unsubscribe from a list, send a mail which body is “unsubscribe” to +the **controller address**: + + unsubscribe +{: .code} + +Make sure to send a plain text mail, an HTML mail might not work. + +### Getting Help + +To see the list of commands, send a mail which body is “help” to the +controller address. diff --git a/fa/community/mailing-lists/ruby-talk-guidelines/index.md b/fa/community/mailing-lists/ruby-talk-guidelines/index.md new file mode 100644 index 0000000000..52f7e83d60 --- /dev/null +++ b/fa/community/mailing-lists/ruby-talk-guidelines/index.md @@ -0,0 +1,82 @@ +--- +layout: page +title: "Posting Guidelines for the Ruby-Talk Mailing List" +lang: fa +--- + +You should follow these guidelines when posting to the ruby-talk mailing list. +{: .summary} + + +1. **Always** be friendly, considerate, tactful, and tasteful. We want to + keep this list hospitable to the growing ranks of newbies, very + young people, and their teachers, as well as cater to fire breathing + wizards. :-) + +2. Keep your content relevant and easy to follow. Try to keep your + content brief and to the point, but also try to include all relevant + information. + + 1. The general format guidelines (aka Netiquette) are + matters of common sense and common courtesy that make life + easier for third parties to follow along (in real time or when + perusing archives): + + * **Please note:** + Include quoted text from previous posts **before** your responses + and **selectively** quote as much as is relevant. + * Use **plain text**; don't use HTML, RTF, or Word. + Most email programs have an option for this; if yours doesn't, + get a (free) program or use a web-based service that does. + * Include examples from files as **in-line** text; don't use + attachments. + + 2. If reporting a problem, give **all** the relevant information + the first time; this isn't the psychic friends newsgroup. :-) + + When appropriate, include: + + * an example (preferably simple) that produces the problem + * the actual error messages + * the version of Ruby (`ruby -v`) + * the OS type and version (`uname -a`) + * the compiler name and version used to build Ruby + +3. Make the subject line maximally informative, so that people who + should be interested will read your post and so that people who + wouldn't be interested can easily avoid it. + + **Usefully** describe the contents of your post. + + This is OK: + + * "How can I do x with y on z?" + * "Problem: did x, expected y, got z." + * "BUG: doing x with module y crashed z." + + This is **not** OK: + + * "Please help!!!" + * "Newbie question" + * "Need Ruby guru to tell me what's wrong" + + These prefixes have become common for subject lines: + + * `[ANN]` (for announcements) + * `[BUG]` (for bug reports) + * `[OT]` (for off-topic, if you must post off-topic) + +4. Finally, be considerate: Don't be too lazy. If you are seeking + information, first make a reasonable effort to look it up. As + appropriate, check the [Ruby home page][ruby-lang], + check the [Ruby FAQ][faq] and other documentation, + use a search engine to search past postings, and so on. + + +_These guidelines where adopted from the [comp.lang.ruby FAQ][clrFAQ]._ + + + +[ruby-lang]: /en/ +[faq]: /en/documentation/faq/ +[clrFAQ]: http://rubyhacker.com/clrFAQ.html diff --git a/fa/community/podcasts/index.md b/fa/community/podcasts/index.md new file mode 100644 index 0000000000..9b4e05315c --- /dev/null +++ b/fa/community/podcasts/index.md @@ -0,0 +1,18 @@ +--- +layout: page +title: "Podcasts" +lang: fa +--- + +Listen to news, interviews, and discussions about Ruby and its community. + +[Ruby Rogues][rogues] +: The Ruby Rogues podcast is a panel discussion about topics relating to + programming, careers, community, and Ruby. + +[Ruby on Rails Podcast][rorpodcast] +: The Ruby on Rails Podcast, a weekly conversation about Ruby on Rails, + open source software, and the programming profession. + +[rorpodcast]: http://5by5.tv/rubyonrails +[rogues]: https://devchat.tv/ruby-rogues diff --git a/fa/community/ruby-core/index.md b/fa/community/ruby-core/index.md new file mode 100644 index 0000000000..27e84d2bd4 --- /dev/null +++ b/fa/community/ruby-core/index.md @@ -0,0 +1,166 @@ +--- +layout: page +title: "Ruby Core" +lang: fa +--- + +Now is a fantastic time to follow Ruby’s development. With the increased +attention Ruby has received in the past few years, there’s a growing need +for good talent to help enhance Ruby and document its parts. +So, where do you start? +{: .summary} + +The topics related to Ruby development covered here are: + +* [Using Subversion to Track Ruby Development](#following-ruby) +* [How to Use Git With the Main Ruby Repository](#git-ruby) +* [Improving Ruby, Patch by Patch](#patching-ruby) +* [Rules for Core Developers](#coding-standards) + +### Using Subversion to Track Ruby Development +{: #following-ruby} + +Getting the latest Ruby source code is a matter of an anonymous checkout +from the [Subversion][1] repository. From your command line: + +{% highlight sh %} +$ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby +{% endhighlight %} + +The `ruby` directory will now contain the latest source code +for the development version of Ruby (ruby-trunk). +Currently patches applied to the trunk are backported to the stable +{{ site.svn.stable.version }}, {{ site.svn.previous.version }}, +and {{ site.svn.old.version }} branches (see below). + +If you’d like to follow patching of Ruby {{ site.svn.stable.version }}, +you should use the `{{ site.svn.stable.branch }}` branch when checking out: + +{% highlight sh %} +$ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.stable.branch }} +{% endhighlight %} + +Similarly for Ruby {{ site.svn.previous.version }}: + +{% highlight sh %} +$ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.previous.branch }} +{% endhighlight %} + +This will check out the respective development tree into a +`{{ site.svn.stable.branch }}` or `{{ site.svn.previous.branch }}` directory. +Developers working on the maintenance branches are expected to migrate +their changes to Ruby’s trunk, so often the branches are very similar, +with the exception of improvements made by Matz and Nobu to the language +itself. + +If you prefer, you may browse [Ruby’s Subversion repository via the web][2]. + +For information about Subversion, please see the [Subversion FAQ][3] +and the [Subversion book][4]. Alternatively, you may find +[Pragmatic Version Control with Subversion][5] to be a useful introductory book. + +### How to Use Git With the Main Ruby Repository +{: #git-ruby} + +Those who prefer to use [Git][6] over Subversion can find instructions +with the [mirror on GitHub][7], both for [those with commit access][8] +and [everybody else][9]. + +### Improving Ruby, Patch by Patch +{: #patching-ruby} + +The core team maintains an [issue tracker][10] for submitting patches and +bug reports to Matz and the gang. These reports also get submitted to +the [Ruby-Core mailing list][mailing-lists] for discussion, +so you can be sure your request won’t go unnoticed. You can +also send your patches straight to the mailing list. Either way, you are +encouraged to take part in the discussion that ensues. + +Please look over the [Patch Writer’s Guide][writing-patches] for some tips, +straight from Matz, on how to get your patches considered. + +To summarize, the steps for building a patch are: + +1. Check out a copy of the Ruby source code from Subversion. + Usually patches for bugfixes or new features should be submitted + for the trunk of Ruby’s source. Even if you wish to add a feature + to Ruby {{ site.svn.previous.version }}, it has to be proven in + the trunk first. + + $ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby + + If you are fixing a bug that is specific to only one maintenance branch, + check out a copy of the respective branch, + e.g. `{{ site.svn.previous.branch }}`. + + $ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.previous.branch }} + +2. Add your improvements to the code. + +3. Create a patch. + + $ svn diff > ruby-changes.patch + +4. Create a ticket in the [issue tracker][10] or email your patch to + the [Ruby-Core mailing list][mailing-lists] with a ChangeLog entry + describing the patch. + +5. If there are no issues raised about the patch, committers will be + given the approval to apply it. + +**Please note:** patches should be submitted as a [unified diff][12]. +For more on how patches are merged, see [the diffutils reference][13]. + +Discussion of Ruby’s development converges on the +[Ruby-Core mailing list][mailing-lists]. So, if you are curious +about whether your patch is worthwhile or you want to spark a discussion +about Ruby’s future, don’t hesitate to come aboard. Be warned that +off-topic discussions are not tolerated on this list, the noise level +should be very low, topics should be pointed, well-conceived and +well-written. Since we’re addressing Ruby’s creator, let’s have some +reverence. + +Keep in mind that Ruby’s core developers live in Japan and, while many +speak very good English, there is a significant timezone difference. +They also have an entire body of Japanese development lists happening +alongside the English counterparts. Be patient, if your claim isn’t +resolved, be persistent—give it another shot a few days later. + +### Rules for Core Developers +{: #coding-standards} + +Generally, the developers of Ruby should be familiar with the source +code and the style of development used by the team. To be clear, the +following guidelines should be honored when checking into Subversion: + +* All check-ins should be described in the `ChangeLog`, following the + [GNU conventions][14]. (Many Ruby core developers use Emacs `add-log` + mode, which can be accessed with the command `C-x 4 a`.) +* Check-in dates should be given in Japan Standard Time (UTC+9). +* The bulleted points from your ChangeLog should also be placed in the + Subversion commit message. This message will be automatically mailed + to the Ruby-CVS list after you commit. +* Function prototypes are used throughout Ruby’s source code and its + packaged extensions. +* Please, do not use C++-style comments (`//`), Ruby’s maintainers + instead prefer the standard C multi-line comment (`/* .. */`). + +See also the information in [Ruby’s issue tracker][10]. + + + +[mailing-lists]: /en/community/mailing-lists/ +[writing-patches]: /en/community/ruby-core/writing-patches/ +[1]: http://subversion.apache.org/ +[2]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/ +[3]: http://subversion.apache.org/faq.html +[4]: http://svnbook.org +[5]: http://www.pragmaticprogrammer.com/titles/svn/ +[6]: http://git-scm.com/ +[7]: https://github.com/ruby/ruby +[8]: https://github.com/shyouhei/ruby/wiki/committerhowto +[9]: https://github.com/shyouhei/ruby/wiki/noncommitterhowto +[10]: https://bugs.ruby-lang.org/ +[12]: http://www.gnu.org/software/diffutils/manual/html_node/Unified-Format.html +[13]: http://www.gnu.org/software/diffutils/manual/html_node/Merging-with-patch.html#Merging%20with%20patch +[14]: http://www.gnu.org/prep/standards/standards.html#Change-Logs diff --git a/fa/community/ruby-core/writing-patches/index.md b/fa/community/ruby-core/writing-patches/index.md new file mode 100644 index 0000000000..5342e8b9f6 --- /dev/null +++ b/fa/community/ruby-core/writing-patches/index.md @@ -0,0 +1,52 @@ +--- +layout: page +title: "Patch Writer’s Guide" +lang: fa +--- + +Here follow some tips, straight from Matz, on how to get +your patches considered. +{: .summary} + +These guidelines were adopted from a [post by Matz][ruby-core-post] +on the Ruby-Core mailing list: + +* Implement one modification per patch + + This is the biggest issue for most deferred patches. When you + submit a patch that fixes multiple bugs (and adds features) at once, + we have to separate them before applying it. It is a rather hard task + for us busy developers, so this kind of patches tends to be deferred. + No big patches please. + +* Provide descriptions + + Sometimes a mere patch does not sufficiently describe the problem it fixes. + A better description (the problem it fixes, preconditions, platform, etc.) + would help a patch to be merged earlier. + +* Diff to the latest revision + + Your problem might have been fixed in the latest revision. Or the code + might be totally different by now. Before submitting a patch, try to fetch + the latest version (the `trunk` branch for the latest development version, + `{{ site.svn.stable.branch }}` for {{ site.svn.stable.version }}) + from the Subversion repository, please. + +* Use `diff -u` + + We prefer `diff -u` style unified diff patches to `diff -c` + or any other style of patches. They are far easier to review. + Do not send modified files, we do not want to make a diff by ourselves. + +* Provide test cases (optional) + + A patch providing test cases (preferably a patch to `test/*/test_*.rb`) + would help us understand the patch and your intention. + +We might move to a Git style push/pull workflow in the future. +But until then, following the above guidelines would help you to avoid +frustration. + + +[ruby-core-post]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/25139 diff --git a/fa/community/user-groups/index.md b/fa/community/user-groups/index.md new file mode 100644 index 0000000000..b5a33a7fdf --- /dev/null +++ b/fa/community/user-groups/index.md @@ -0,0 +1,44 @@ +--- +layout: page +title: "User Groups" +lang: fa +--- + +In the programming community, user groups form support networks for +people interested in certain topics. They are a great place to increase +your skills and network with other programmers. User groups are informal +and their structure varies from group to group. Anyone can form their +own group and set their own rules and schedule. +{: .summary} + +### Ruby User Groups + +If you want to get together with other Ruby programmers, a local user +group may be just the thing. Ruby user groups are entirely devoted to +Ruby. They typically feature monthly meetings, a mailing list, a website, +and if you're lucky, frequent hacking sessions (meetings devoted +to giving people a chance to write Ruby code). + +Information about Ruby user groups can be found on various websites: + +[rubyusergroups.org][1] +: A public listing of Ruby groups throughout the world. Also allows + Rubyists to place themselves on a map of the world. + +[Ruby Meetup Groups][2] +: A substantial number of Ruby User Groups have chosen to make Meetup + their home. Meetup provides a number of tools for user groups, + including: private forums, a place for announcements, automated + meeting reminders, and a nice RSVP system. + +### Organizing Your Own Group + +If you are interested in forming your own group, be sure to find out if +there is already a Ruby user group in your area. Larger meetings are +usually much more fun, so starting your own group may not be the best +option if there is already one nearby. + + + +[1]: http://www.rubyusergroups.org/ +[2]: http://ruby.meetup.com diff --git a/fa/community/weblogs/index.md b/fa/community/weblogs/index.md new file mode 100644 index 0000000000..c7ffcf07cb --- /dev/null +++ b/fa/community/weblogs/index.md @@ -0,0 +1,48 @@ +--- +layout: page +title: "Blogs" +lang: fa +--- + +Ruby blogs have exploded over the past years and given sufficient +hunting, you can unearth hundreds of blogs sharing bits of Ruby code, +describing new techniques, or speculating on Ruby’s future. +{: .summary} + +### Mining for Ruby Blogs + +* [**RubyFlow**][rubyflow], “the Ruby and Rails community linklog”, + is a Ruby news site with links to libraries, blog posts, tutorials, + and other Ruby resources. +* [**Rubyland**][rubyland] aggregates news and blog posts about Ruby + from RSS feeds. + +### Blogs of Note + +A few notable blogs stand out for the frequency and immediacy of their +updates. + +* [**Ruby Weekly**][ruby-weekly]: Although more of a newsletter than a + blog, Ruby Weekly is a distillation of the most interesting Ruby + articles and news each week. +* [**Riding Rails**][riding-rails] is the official group blog of the + Ruby on Rails team. If you are running Rails, this blog is essential + for notification of security updates and an overall view of the wide + Rails community. + +### Spreading the Word + +If you're interested in writing for any of the above blogs, you should +contact the authors. + +Ruby is also a common topic on [reddit][reddit] and [Hacker News][hn], +in their respective programming news. If you find some brilliant code +out there, be sure to share! + + +[rubyflow]: http://www.rubyflow.com/ +[rubyland]: http://rubyland.news/ +[ruby-weekly]: https://rubyweekly.com/ +[riding-rails]: http://weblog.rubyonrails.org/ +[reddit]: http://www.reddit.com/r/ruby +[hn]: http://news.ycombinator.com/ diff --git a/fa/conduct/index.md b/fa/conduct/index.md new file mode 100644 index 0000000000..f320a70536 --- /dev/null +++ b/fa/conduct/index.md @@ -0,0 +1,22 @@ +--- +layout: page +title: "The Ruby Community Conduct Guideline" +lang: fa +--- + +We have picked the following conduct guideline based on an early proposed draft +of the PostgreSQL CoC, for Ruby developers community for safe, productive +collaboration. +Each Ruby related community (conference etc.) may pick their own Code of Conduct. +{: .summary} + +This document provides community guidelines for a safe, respectful, productive, +and collaborative place for any person who is willing to contribute to the Ruby +community. It applies to all "collaborative space", which is defined as +community communications channels (such as mailing lists, submitted patches, +commit comments, etc.). + + * Participants will be tolerant of opposing views. + * Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks. + * When interpreting the words and actions of others, participants should always assume good intentions. + * Behaviour which can be reasonably considered harassment will not be tolerated. diff --git a/fa/documentation/faq/1/index.md b/fa/documentation/faq/1/index.md new file mode 100644 index 0000000000..49f99a91d8 --- /dev/null +++ b/fa/documentation/faq/1/index.md @@ -0,0 +1,344 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## General questions + +### What is Ruby? + +Ruby is a simple and powerful object-oriented programming language, created by +Yukihiro Matsumoto (who goes by the handle "Matz" in this document and on the +mailing lists). + +Like Perl, Ruby is good at text processing. Like Smalltalk, everything in Ruby +is an object, and Ruby has blocks, iterators, meta-classes and other good +stuff. + +You can use Ruby to write servers, experiment with prototypes, and for +everyday programming tasks. As a fully-integrated object-oriented language, +Ruby scales well. + +Ruby features: + +* Simple syntax, +* Basic OO features (classes, methods, objects, and so on), +* Special OO features (mixins, singleton methods, renaming, and so on), +* Operator overloading, +* Exception handling, +* Iterators and closures, +* Garbage collection, +* Dynamic loading (depending on the architecture), +* High transportability (runs on various Unices, Windows, DOS, macOS, OS/2, + Amiga, and so on). + +### Show me some Ruby code! + +Let's define a class called `Person`, with a name and an age. We'll test our +code by creating a few people and examining them. + +~~~ +class Person + attr_accessor :name, :age + + def initialize(name, age) + @name = name + @age = age.to_i + end + + def inspect + "#{name} (#{age})" + end +end + +p1 = Person.new("Elmo", 4) +p2 = Person.new("Zoe", 7) + +p1 # => Elmo (4) +p2 # => Zoe (7) +~~~ + +Now let's populate an array of people by reading their names and ages from a +file `ages` containing lines like: + +~~~ +Bert: 8 +Cookie: 11 +Elmo: 4 +Ernie: 8 +Zoe: 7 +~~~ + +The code uses regular expressions to parse successive lines from the input +file, creating a new `Person` object for each match and pushing it onto the +end of the array `people`. + +~~~ +people = Array.new + +File.foreach("ages") do |line| + people << Person.new($1, $2) if line =~ /(.*):\s+(\d+)/ +end + +people # => [Bert (8), Cookie (11), Elmo (4), Ernie (8), Zoe (7)] +~~~ + +Now, let's sort the result based on the person's age. There are many ways to +do this. We can define a sort block, which tells Ruby how to do the comparison +of two people: + +~~~ +sorted = people.sort {|a, b| a.age <=> b.age } +sorted # => [Elmo (4), Zoe (7), Bert (8), Ernie (8), Cookie (11)] +~~~ + +Another way would be to change the comparison method for class `Person`: + +~~~ +class Person + def <=>(other) + age <=> other.age + end +end +people.sort # => [Elmo (4), Zoe (7), Bert (8), Ernie (8), Cookie (11)] +~~~ + +### Why the name “Ruby”? + +Influenced by Perl, Matz wanted to use a jewel name for his new language, so +he named Ruby after a colleague's birthstone. + +Later, he realized that Ruby comes right after Perl in several situations. +In birthstones, pearl is June, ruby is July. When measuring font sizes, +pearl is 5pt, ruby is 5.5pt. He thought Ruby was a good name for a +programming language newer (and hopefully better) than Perl. + +(Based on an explanation from Matz in [\[ruby-talk:00394\]][ruby-talk:00394] +on June 11, 1999.) + +[ruby-talk:00394]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/394 + +### What is the history of Ruby? + +The following is a summary of a posting made by Matz in +[\[ruby-talk:00382\]][ruby-talk:00382] on June 4, 1999. +(The birthday of Ruby has been corrected in +[\[ruby-list:15977\]][ruby-list:15977].) + +> Well, Ruby was born on February 24, 1993. I was talking with my colleague +> about the possibility of an object-oriented scripting language. I knew Perl +> (Perl4, not Perl5), but I didn't like it really, because it had the smell of +> a toy language (it still has). The object-oriented scripting language seemed +> very promising. + +> I knew Python then. But I didn't like it, because I didn't think it was a +> true object-oriented language---OO features appeared to be an add-on to the +> language. As a language manic and OO fan for 15 years, I really wanted a +> genuine object-oriented, easy-to-use scripting language. I looked for, but +> couldn't find one. + +> So, I decided to make it. It took several months to make the interpreter +> run. I put into it the features I love to have in my language, such as +> iterators, exception handling, garbage collection. + +> Then, I reorganized the features of Perl into a class library, and +> implemented them. I posted Ruby 0.95 to the Japanese domestic newsgroups +> in Dec. 1995. + +> Since then, highly active mailing lists have been established and +> web pages formed. + +[ruby-talk:00382]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/382 +[ruby-list:15977]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/15977 + +### Where is the Ruby Home Page? + +The official Ruby Home Page is [www.ruby-lang.org](https://www.ruby-lang.org). +Besides the English and Japanese versions, there exist translations +into various other languages. + +Good starting points for finding Ruby information are the +[Documentation](/en/documentation/) and [Community](/en/community/) +pages. + +### Is there a Ruby newsgroup? + +comp.lang.ruby was established in May, 2000 (thanks to the efforts of +[Conrad Schneiker](mailto:schneiker@jump.net)). + +### Is there a Ruby mailing list? + +There are several mailing lists talking about Ruby. See the +[Mailing Lists](/en/community/mailing-lists/) +page for more information. + +You can search the mailing list archives using +[http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml](http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml). +(This is the URL for the ruby-talk list, munge as required for the others). + +### How can I thread the mailing list in mutt? + +{% include faq-out-of-date.html %} + +For some of the Ruby mailing lists, the mailing list software adds a prefix +to the subject lines, for example `ruby-core:1234`. This can confuse the +threading in some mail user agents. + +In mutt, you can get threading to work using the following variable setting. + +~~~ +# reply regexp, to support MLs like ruby-talk. +set reply_regexp="^(\[[a-z0-9:-]+\][[:space:]]*)?(re([\[0-9\]+])*|aw):[[:space:]]*" +~~~ + +### Which is correct, “Ruby” or “ruby”? + +Officially, the language is called “Ruby”. On most systems, it is invoked +using the command `ruby`. It's OK to use “ruby” instead of “Ruby”. + +Please don't use “RUBY” as the language name. + +Originally, or historically, it was called “ruby”. + +### Are there any Ruby books? + +{% include faq-out-of-date.html %} + +* Programming Ruby: The Pragmatic Programmer's Guide, + (the Pickaxe Book) by David Thomas and Andrew Hunt: ISBN 0-20171-089-7, + Addison-Wesley, October 2000. + +* A Japanese language Ruby reference book by Matz et al. and published by + ASCII is available in Japan (ISBN 4-7561-3254-5). An English translation, + “The Ruby Programming Language”, is available from O'Reilly & Associates + (ISBN 978-0596516178). + +* A Japanese language “Ruby Pocket Reference” is published by O'Reilly Japan + (ISBN 4-87311-023-8). Let O'Reilly in the US know if you'd like to see a + translation. + +* In addition, “Mastering Regular Expressions”, by Jeffrey Friedl, + (the Hip Owl Book): ISBN 1-56592-257-3 from O'Reilly & Associates, + is a reference work that covers the art and implementation of regular + expressions in various programming languages. Most of it is highly + relevant to Ruby regular expressions. + +### Which editors provide support for Ruby? + +{% include faq-out-of-date.html %} + +* [Emacs](http://www.gnu.org/software/emacs/emacs.html) + or [XEmacs](http://www.xemacs.org/): `ruby-mode.el` is supplied in the Ruby + distribution. With some versions of XEmacs, you may need to add + `(load "font-lock")` to your `.emacs` file to allow `ruby-mode.el` to detect + the syntax highlighting package you are using. +* [Vim](http://www.vim.org/): Vim 5.7 and later have Ruby syntax files as + standard in the runtime package. For prior versions, a syntax file for Ruby + is available at + [http://www.xs4all.nl/~hipster/lib/ruby/ruby.vim](http://www.xs4all.nl/~hipster/lib/ruby/ruby.vim). +* [Jedit](http://jedit.sourceforge.net/): A portable editor written in Java, + comes with support for Ruby. +* [Nedit](http://www.nedit.org): Eric Santonacci has written Ruby support for + Nedit, available from + [ftp://ftp.talc.fr/pub/ruby/ruby.nedit-0.1.tar.gz](ftp://ftp.talc.fr/pub/ruby/ruby.nedit-0.1.tar.gz). +* Barry Shultz has written a Ruby definition file for TextPad, available at + [https://www.textpad.com/add-ons/synn2t.html](https://www.textpad.com/add-ons/synn2t.html). + +### How can I annotate Ruby code with its results? + +{% include faq-out-of-date.html %} + +People commonly annotate Ruby code by showing the results of executing each +statement as a comment attached to that statement. For example, in the +following code, we show that the assignment generates the string "Billy Bob", +and then the result of extracting some substrings. + +~~~ +str = "Billy" + " Bob" # => "Billy Bob" +str[0,1] + str[2,1] + str[-2,2] # => "Blob" +~~~ + +Gotoken's `xmp` package, available from +[http://www.ruby-lang.org/en/raa-list.rhtml?name=xmp](http://www.ruby-lang.org/en/raa-list.rhtml?name=xmp) +is a utility that annotates Ruby source code this way. + +Emacs and vim users can integrate this with their editing environments, which +is useful if you want to send people e-mail with annotated Ruby code. Having +installed `xmp`, Emacs users can add the following to their `.emacs` file: + +~~~ +(defun ruby-xmp-region (reg-start reg-end) + "Pipe the region through Ruby's xmp utility and replace the region with + the result." + (interactive "r") + (shell-command-on-region reg-start reg-end + "ruby -r xmp -n -e 'xmp($_, \"%l\t\t# %r\n\")'" + t)) +(global-set-key [(meta f10)] 'ruby-xmp-region) +~~~ + +Vim users can use the mapping (thanks to hipster): + +~~~ +map :!ruby -r xmp -n -e 'xmp($_, "\%l\t\t\# \%r\n")' +~~~ + +In both cases, highlight a region of code and hit Meta-F10 to annotate it. + +### I can't understand Ruby even after reading the manual! + +{% include faq-out-of-date.html %} + +The syntax of Ruby has been fairly stable since Ruby 1.0, but new features are +added every now and then. So, the books and the online documentation can get +behind. + +If you have a problem, feel free to ask in the mailing list +(see the [Mailing Lists page](/en/community/mailing-lists/)). +Generally you'll get timely answers from Matz himself, the +author of the language, from other gurus, and from those who have solved +problems similar to your own. + +Please include the output of `ruby -v` along with any problematic +source code. + +If you have a problem using [`irb`](../10/#irb), +be aware that it has some limitations. +Try the script using `irb --single-irb`, or directly using the +`ruby` command. + +There might be similar questions in the mailing list, and it is good +netiquette to read through recent mails (RFC1855:3.1.1, 3.1.2) before asking. +But do ask on the list, and a correct answer will be forthcoming. diff --git a/fa/documentation/faq/10/index.md b/fa/documentation/faq/10/index.md new file mode 100644 index 0000000000..7a8f25a730 --- /dev/null +++ b/fa/documentation/faq/10/index.md @@ -0,0 +1,145 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Extension library + +### How can I use Ruby interactively? +{: #irb} + +{% include faq-out-of-date.html %} + +You can try using `irb`. The following is paraphrased from Kentaro Goto +(Gotoken), and originally appeared in [\[ruby-talk:444\]][ruby-talk:444]. + +1. Get the latest tarball of `irb` from the + [contrib directory](ftp://ftp.netlab.co.jp/pub/lang/ruby/contrib/) + in the Ruby archive. +2. Extract the `irb` directory tree. +3. Add the location of the `irb/` directory to the `$RUBYLIB` + environment variable. +4. Make a symbolic link from `$RUBYLIB/irb/irb.rb` to a file called `irb` + somewhere in your path. +5. `chmod +x $RUBYLIB/irb/irb.rb` +6. Possibly use `rehash` to tell your login shell about the new command. +7. Type `irb`. + +If the readline extension module works with your interpreter, it makes `irb` +a lot more fun to use. + +There is also a simple program, `eval`, in the `samples/` directory of the +Ruby distribution. It lets you enter expressions and view their values. +You can copy `eval` into the `site_ruby` directory in the Ruby tree, and +then invoke it using: + +~~~ +ruby -r eval -e0 +~~~ + +[ruby-talk:444]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/444 + +### Is there a debugger for Ruby? + +There is a gdb-like debugger for Ruby. + +~~~ +ruby -r debug your_program +~~~ + +### How can I use a library written in C from Ruby? + +Of all the scripting languages, Ruby is probably the easiest to extend. +There are no problems with reference counting and variable types, and very +few interfaces to learn. In fact, C code used to extend Ruby often ends up +looking surprisingly like Ruby code itself. + +First, read the `doc/extension.rdoc` file in the Ruby source, +or read [extension.rdoc on docs.ruby-lang.org][extension-rdoc]. +This is a good document, not only if you are writing an extension library, +but also if you want to understand Ruby more deeply. + +Then, the RubyGems site provides a +[guide on creating gems with extensions][rubygems-guide]. +It shows how to setup a gem with C extensions that are built at install time. +It has also links to some existing gems that wrap C libraries and +to further reading. + +You might also want to have a look at the source of the interpreter itself, +and at the various supplied extensions in the `ext/` directory +(you can browse the [Ruby repository on GiHub][ruby-github]). + +[extension-rdoc]: http://docs.ruby-lang.org/en/trunk/extension_rdoc.html +[rubygems-guide]: http://guides.rubygems.org/gems-with-extensions/ +[ruby-github]: https://github.com/ruby/ruby + +### Can I use Tcl/Tk in Ruby? + +{% include faq-out-of-date.html %} + +There are two interfaces to Tcl/Tk included in the standard distribution. +One is under `ext/tcltk/` and loaded with `require "tcltk"`. The syntax is +very close to that Tcl which is passed on to the Tcl interpreter. +Unfortunately, the description for this library is written in Japanese. + +The other is under `ext/tk/` and loaded with `require "tk"`. Its syntax +is closer to the style of the Tk interface provided by the Perl and Python +interfaces. + +### Tk won't work. Why? + +{% include faq-out-of-date.html %} + +Your Tk version may be old, try a newer version. + +### Can I use gtk+ or xforms interfaces in Ruby? + +{% include faq-out-of-date.html %} + +You will find `ruby-gtk-x.xx.tar.gz` and `ruby-forms-x.x.tar.gz` +under `contrib/` on the Ruby ftp sites. + +### How can I do date arithmetic? + +{% include faq-out-of-date.html %} + +A `Time` object can express only the dates between Jan 1, 1970 and +Jan 19, 2038. + +Two standard extension library modules are provided: +`require "date"`, which is simple and uses the English calendar, +and `require "date2"`, which is more general purpose. + +Also see `sample/cal.rb`. diff --git a/fa/documentation/faq/11/index.md b/fa/documentation/faq/11/index.md new file mode 100644 index 0000000000..482fa9b2e0 --- /dev/null +++ b/fa/documentation/faq/11/index.md @@ -0,0 +1,192 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Other features + +### What does `a ? b : c` mean? + +This is the so-called “ternary operator” and is the same as saying +`if a then b else c end`. + +### How can I count the number of lines in a file? + +The following code may give the fastest result. + +~~~ +File.readlines("example").size # => 3 +~~~ + +### What do `MatchData#begin` and `MatchData#end` return? + +They act with `$~`, and return the start index and the end index of +the matched data in the original string. See an example in +[tab expansion](../9/#tab-expansion). + +### How can I sum the elements in an array? + +{% include faq-out-of-date.html %} + +Rather than solve the specific problem, let's solve the general case. +The first thing we will do is produce a method that will iterate over +an `Enumerable` object and collect a single result. Smalltalk calls that +method inject, so we will too: + +~~~ +module Enumerable + + # inject(n) {|n, i| ...} + def inject(n) + each {|i| n = yield(n, i) } + + n + end +end +~~~ + +Notice how we have added the method to `Enumerable`. This means that anything +that includes Enumerable can now use `inject`. But how do we use it? It takes +a single argument `n` and a block. For each element in the thing being +enumerated, it calls the block, passing in `n` and the element itself. +The result of the block is assigned back to `n`. So, to define `sum`, +we could write: + +~~~ +module Enumerable + def sum + inject(0) {|n, i| n + i } + end +end + +[1,3,5,7,9].sum # => 25 +(1..100).sum # => 5050 +~~~ + +### How can I use continuations? + +{% include faq-out-of-date.html %} + +Ruby's continuations allow you to create an object representing a place in a +Ruby program, and then return to that place at any time (even if it has +apparently gone out of scope). Continuations can be used to implement complex +control structures, but are typically more useful as ways of confusing people. + +In [\[ruby-talk:4482\]][ruby-talk:4482], Jim Weirich posted the following +examples of continuations: + +~~~ +# -------------------------------------------------------------------- +# Simple Producer/Consumer +# -------------------------------------------------------------------- +# Connect a simple counting task and a printing task together using +# continuations. +# +# Usage: count(limit) + +def count_task(count, consumer) + (1..count).each do |i| + callcc {|cc| consumer.call cc, i } + end + nil +end + +def print_task() + producer, i = callcc { |cc| return cc } + print "#{i} " + callcc { |cc| producer.call } +end + +def count(limit) + count_task(limit, print_task()) + print "\n" +end +~~~ + + +~~~ +# -------------------------------------------------------------------- +# Filtering Out Multiples of a Given Number +# -------------------------------------------------------------------- +# Create a filter that is both a consumer and producer. Insert it +# between the counting task and the printing task. +# +# Usage: omit(2, limit) + +def filter_task(factor, consumer) + producer, i = callcc { |cc| return cc } + if (i%factor) != 0 then + callcc { |cc| consumer.call cc, i } + end + producer.call +end + +def omit(factor, limit) + printer = print_task() + filter = filter_task(factor, printer) + count_task(limit, filter) + print "\n" +end +~~~ + + +~~~ +# -------------------------------------------------------------------- +# Prime Number Generator +# -------------------------------------------------------------------- +# Create a prime number generator. When a new prime number is +# discovered, dynamically add a new multiple filter to the chain of +# producers and consumers. +# +# Usage: primes(limit) + +def prime_task(consumer) + producer, i = callcc { |cc| return cc } + if i >= 2 then + callcc { |cc| consumer.call cc, i } + consumer = filter_task(i, consumer) + end + producer.call +end + +def primes(limit) + printer = print_task() + primes = prime_task(printer) + count_task(limit, primes) + print "\n" +end +~~~ + +[ruby-talk:4482]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/4482 diff --git a/fa/documentation/faq/2/index.md b/fa/documentation/faq/2/index.md new file mode 100644 index 0000000000..ddd4cfefd5 --- /dev/null +++ b/fa/documentation/faq/2/index.md @@ -0,0 +1,102 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## How does Ruby stack up against...? + +### How does Ruby compare with Python? + +Python and Ruby are both object oriented languages that provide a smooth +transition from procedural to OO programming styles. Smalltalk, by contrast, +is object only---you can't do anything until you understand objects, +inheritance and the sizable Smalltalk class hierarchy. By providing procedural +training wheels, Python and Ruby “fix” one of the features that may have +kept Smalltalk out of the mainstream. The two languages differ by approaching +this solution from opposite directions. + +Python is a hybrid language. It has functions for procedural programming and +objects for OO programming. Python bridges the two worlds by allowing +functions and methods to interconvert using the explicit `self` parameter +of every method def. When a function is inserted into an object, the first +argument automagically becomes a reference to the receiver. + +Ruby is a pure OO language that can masquerade as a procedural one. It has no +functions, only method calls. In a Ruby method the receiver, also called +`self`, is a hidden argument like `this` in C++. A `def` statement outside of +a class definition, which is a function in Python, is actually a method call +in Ruby. These ersatz functions become private methods of class Object, the +root of the Ruby class hierarchy. Procedural programming is neatly solved from +the other direction---everything is an object. If the user doesn't grok +objects yet, they can just pretend that `def` is a function definition and +still get useful work done. + +Ruby's OO purity provides a number features that Python lacks or is still +working toward: a unified type/class hierarchy, metaclasses, the ability to +subclass everything, and uniform method invocation (none of this `len()` is a +function but `items()` is a method rubbish). Ruby, like Smalltalk, only +supports single inheritance, but it does have a very powerful mixin concept: +a class definition may include a module, which inserts that module's methods, +constants, etc. into the class. + +Ruby, again like Smalltalk, provides closures and code blocks and uses them +to the same good effect. The Ruby collection classes and iterators are +outstanding, much more powerful and elegant than the ad hoc solutions that +Python is sprouting (lambdas and list comprehensions). + +Ruby's syntax and design philosophy are heavily influenced by Perl. It has a +lot of syntactic variability. Statement modifiers (`if`, `unless`, `while`, +`until`, etc.) may appear at the end of any statement. Some key words are +optional (the `then` in an `if` statement for example). Parentheses may +sometimes be elided in method calls. The receiver of a method may usually be +elided. +Many, many things are lifted directly from Perl. +Built in regular expressions, `$_` and friends, here documents, the +single-quoted / double-quoted string distinction, `$` and `@` prefixes to +distinguish different kinds of names and so forth. + +If you like Perl, you will like Ruby and be right at home with its syntax. +If you like Smalltalk, you will like Ruby and be right at home with its +semantics. If you like Python, you may or may not be put off by the huge +difference in design philosophy between Python and Ruby/Perl. + +Ruby is much more complex than Python but its features, for the most part, +hang together well. Ruby is well designed and full of neat ideas that might be +mined for P3K. I'm not sure how many Python programmers will be attracted to +it though---it hasn't won me over (yet). But it is worthy of serious study and +could be a real threat to Perl. + +Posted by [John Dell'Aquila](mailto:jbd@alum.mit.edu) in comp.lang.python, +11/17/2000. Reproduced with permission. diff --git a/fa/documentation/faq/3/index.md b/fa/documentation/faq/3/index.md new file mode 100644 index 0000000000..d779062103 --- /dev/null +++ b/fa/documentation/faq/3/index.md @@ -0,0 +1,212 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Installing Ruby + +For current information on downloading and installing Ruby +see the [Installation](/en/documentation/installation/) +or [Downloads](/en/downloads/) page. + +### What operating systems support Ruby? + +{% include faq-out-of-date.html %} + +Ruby is developed under Linux, and is written in fairly straightforward C. +It runs under Linux and other UNIX-like operating systems, macOS, +Windows, DOS, BeOS, Amiga, Acorn Risc OS, and OS/2. + +### Where can I get Ruby sources? + +The latest version of Ruby can be downloaded from: +[www.ruby-lang.org/en/downloads/](/en/downloads/). +Mirror sites are also listed on this page. + +Also on this page is a link to a nightly snapshot of the development tree. + +### Can I get to the development source tree? + +{% include faq-out-of-date.html %} + +If you have a CVS client, you can check out the current source tree using: + +~~~ +$ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs login +(Logging in to anonymous@cvs.netlab.co.jp) +CVS password: guest +$ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs co ruby +~~~ + +If you do not have CVS you can get a nightly snapshot of the development +source from +[https://cache.ruby-lang.org/pub/ruby/snapshot.tar.gz](https://cache.ruby-lang.org/pub/ruby/snapshot.tar.gz). + +### How do I compile Ruby? + +Under Unix, Ruby uses the `autoconf` system to configure the build +environment. You don't need the `autoconf` command on your box to build Ruby +from a distribution; just use the commands: + +~~~ +$ ./configure [configure options] +$ make +$ make test +$ make install +~~~ + +You may need superuser privileges to install Ruby if you don't override the +default installation location (`/usr/local`). You can get a full list of +`configure` options using: + +~~~ +$ ./configure --help +~~~ + +If you are working from the source repository, you may need to run +`autoconf` before running `configure`. + +### How do I tell Ruby where my libraries are? + +{% include faq-out-of-date.html %} + +On some systems, the build process may fail to find libraries used by +extension modules (for example the `dbm` libraries). + +You can tell Ruby where to find libraries using options to `configure`. +From [\[ruby-talk:5041\]][ruby-talk:5041]: + +~~~ +$ ./configure --with-xxx-yyy=DIR +~~~ + +where xxx is either + +~~~ +opt extra software path in general +dbm path for dbm library +gdbm path for gdbm library +x11 ...for X11.. +tk ...for Tk... +tcl ...for Tcl... +~~~ + +and yyy is either + +~~~ +dir specifies -I DIR/include -L DIR/lib +include specifies -I DIR +lib specifies -L DIR +~~~ + +On HP-UX, there may be problems building with `gcc`. Try using the native +compiler instead. WATANABE Tetsuya recommends: + +~~~ +$ CC="cc -Ae" CFLAGS=-O ./configure --prefix=/opt/gnu +~~~ + +There may also be problems with HP's native `sed`. +He recommends installing the GNU equivalent. + +[ruby-talk:5041]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/5401 + +### Are precompiled binaries available? + +{% include faq-out-of-date.html %} + +A single download that contains everything you need to run Ruby under various +Windows operating systems is available from +[RubyCentral's One-click Windows installer](http://www.rubycentral.com/downloads/ruby-install.html). +This installation uses cygwin, and includes Tk support. + +If you want other installation options, precompiled binaries for Windows are +also available from +[http://www.os.rim.or.jp/~eban/](http://www.os.rim.or.jp/~eban/). +If you download the `ruby-1.x.y-yyyymmdd-i386-cygwin.tar.gz` package +(which is a good choice), you'll also need to download the cygwin DLL, +available from the same page. + +[Reuben Thomas](mailto:Reuben.Thomas@cl.cam.ac.uk) writes: + +> You could mention that there's a port to Acorn RISC OS, currently of v1.4.3. +> I made the port, and have no plans to maintain it, but I did send the +> patches to matz, so newer versions may well compile too. + +> I do provide a binary distribution of 1.4.3 for the Acorn at +> [http://www.cl.cam.ac.uk/users/rrt1001/ruby.zip](http://www.cl.cam.ac.uk/users/rrt1001/ruby.zip). + +### What's all this “cygwin”, “mingw”, and “djgpp” stuff? + +{% include faq-out-of-date.html %} + +Ruby is written to take advantage of the rich feature set of a Unix +environment. Unfortunately, Windows is missing some of the functions, and +implements others differently. As a result, some kind of mapping layer is +needed to run Ruby (and other Unix-based programs) under Windows. + +You may come across different versions of the Ruby executable that use +different wrapper mapping layers. + +The rbdj version is a stand-alone version of the Windows binary of Ruby. +It uses the DJ Delorie tools +([http://www.delorie.com](http://www.delorie.com)). + +The rbcw version is a Windows binary of Ruby that requires the cygwin library, +available at [http://www.cygwin.com](http://www.cygwin.com) or from the +Ruby download pages. Cygwin is both an emulation layer and a set of +utilities initially produced by Cygnus Solutions (now part of Redhat). +The cygwin version of Ruby probably has the fullest set of features under +Windows, so most programmers will want to use it. + +To use the rbcw version, you will need to install the cygwin .dll separately. +Once you have installed cygwin on your computer, copy `cygwin1.dll` (which +is found in the `bin` subdirectory of the cygwin distribution) to your +`Windows\System32` folder (or somewhere else on your path). + +Thanks to Anders Schneiderman for the basis of this description. + +### Why doesn't Tk graphics work under Windows? + +{% include faq-out-of-date.html %} + +Is Tk installed correctly on your Windows box? Go to +[http://dev.scriptics.com/software/tcltk/](http://dev.scriptics.com/software/tcltk/) +to find a precompiled binary Tcl/Tk distribution for your box. + +Are the environment variables `TCL_LIBRARY` and `TK_LIBRARY` pointing to the +directories containing tcl and tk? + +Is the tk library in your path? diff --git a/fa/documentation/faq/4/index.md b/fa/documentation/faq/4/index.md new file mode 100644 index 0000000000..e7e2f834eb --- /dev/null +++ b/fa/documentation/faq/4/index.md @@ -0,0 +1,428 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Variables, constants, and arguments + +### Does assignment generate a new copy of an object? +{: #assignment} + +All variables and constants reference (point at) some object. (With the +exception of uninitialized local variables, which reference nothing. +These raise a `NameError` exception if used). When you assign to a variable, +or initialize a constant, you set the object that the variable or constant +references. + +Assignment on its own therefore never creates a new copy of an object. + +There's a slightly deeper explanation in certain special cases. Instances of +`Fixnum`, `NilClass`, `TrueClass`, and `FalseClass` are contained directly in +variables or constants---there is no reference involved. A variable holding +the number `42` or the constant `true` actually holds the value, and not a +reference to it. Assignment therefore physically produces a copy of objects +of these types. We discuss this more in +[Immediate and Reference Objects](../6/#immediate). + +### What is the scope of a local variable? + +A new scope for a local variable is introduced in (1) the toplevel (main), +(2) a class (or module) definition, or (3) a method definition. + +~~~ +var = 1 # (1) +class Demo + var = 2 # (2) + def method + var = 3 # (3) + puts "in method: var = #{var}" + end + puts "in class: var = #{var}" +end +puts "at top level: var = #{var}" +Demo.new.method +~~~ + +Produces: + +~~~ +in class: var = 2 +at top level: var = 1 +in method: var = 3 +~~~ + +(Note that the class definition is executable code: the trace message it +contains is written as the class is defined). + +A block (`{ ... }` or `do ... end`) almost introduces a new scope ;-) +Local variables created within a block are not accessible outside the block. +However, if a local variable within the block has the same name as an existing +local variable in the caller's scope, then no new local variable is created, +and you can subsequently access that variable outside the block. + +~~~ +a = 0 +1.upto(3) do |i| + a += i + b = i*i +end +a # => 6 +# b is not defined here +~~~ + +This becomes significant when you use threading---each thread receives its +own copy of the variables local to the thread's block: + +~~~ +threads = [] + +["one", "two"].each do |name| + threads << Thread.new do + local_name = name + a = 0 + 3.times do |i| + Thread.pass + a += i + puts "#{local_name}: #{a}" + end + end +end + +threads.each {|t| t.join } +~~~ + +Might produce (in case the scheduler switches threads as hinted +by `Thread.pass`; this depends on OS and processor): + +~~~ +one: 0 +two: 0 +one: 1 +two: 1 +one: 3 +two: 3 +~~~ + +`while`, `until`, and `for` are control structures, not blocks, so local +variables within them will be accessible in the enclosing environment. +`loop`, however, is a method and the associated block introduces a new scope. + +### When does a local variable become accessible? + +Actually, the question may be better asked as: “at what point does Ruby work +out that something is a variable?” The problem arises because the simple +expression `a` could be either a variable or a call to a method with no +parameters. To decide which is the case, Ruby looks for assignment statements. +If at some point in the source prior to the use of `a` it sees it being +assigned to, it decides to parse `a` as a variable, otherwise it treats it +as a method. As a somewhat pathological case of this, consider this code +fragment, originally submitted by Clemens Hintze: + +~~~ +def a + puts "method `a' called" + + 99 +end + +[1, 2].each do |i| + if i == 2 + puts "a = #{a}" + else + a = 1 + puts "a = #{a}" + end +end +~~~ + +Produces: + +~~~ +a = 1 +method `a' called +a = 99 +~~~ + +During the parse, Ruby sees the use of `a` in the first `puts` statement +and, as it hasn't yet seen any assignment to `a`, assumes that it is a method +call. By the time it gets to the second `puts` statement, though, it has seen +an assignment, and so treats `a` as a variable. + +Note that the assignment does not have to be executed---Ruby just has to have +seen it. This program does not raise an error: + +~~~ +a = 1 if false; a # => nil +~~~ + +This issue with variables is not normally a problem. If you do bump into it, +try putting an assignment such as `a = nil` before the first access to the +variable. This has the additional benefit of speeding up the access time to +local variables that subsequently appear in loops. + +### What is the scope of a constant? + +A constant defined in a class or module definition can be accessed directly +within that class's or module's definition. + +You can directly access the constants in outer classes and modules from +within nested classes and modules. + +You can also directly access constants in superclasses and included modules. + +Apart from these cases, you can access class and module constants using +the `::` operator, `ModuleName::CONST1` or `ClassName::CONST2`. + +### How are arguments passed? + +The actual argument is assigned to the formal argument when the method is +invoked. +(See [assignment](#assignment) for more on the semantics of assignment.) + +~~~ +def add_one(number) + number += 1 +end + +a = 1 +add_one(a) # => 2 +a # => 1 +~~~ + +As you are passing object references, it is possible that a method may modify +the contents of a mutable object passed into it. + +~~~ +def downer(string) + string.downcase! +end + +a = "HELLO" # => "HELLO" +downer(a) # => "hello" +a # => "hello" +~~~ + +There is no equivalent of other language's pass-by-reference semantics. + +### Does assignment to a formal argument influence the actual argument? + +A formal argument is a local variable. Within a method, assigning to a formal +argument simply changes the argument to reference another object. + +### What happens when I invoke a method via a formal argument? + +All Ruby variables (including method arguments) act as references to objects. +You can invoke methods in these objects to get or change the object's state +and to make the object do something. You can do this with objects passed to +methods. You need to be careful when doing this, as these kinds of side +effects can make programs hard to follow. + +### What does `*` prepended to an argument mean? + +When used as part of a formal parameter list, the asterisk allows arbitrary +numbers of arguments to be passed to a method by collecting them into an +array, and assigning that array to the starred parameter. + +~~~ +def foo(prefix, *all) + all.each do |element| + puts "#{prefix}#{element}" + end +end + +foo("val = ", 1, 2, 3) +~~~ + +Produces: + +~~~ +val = 1 +val = 2 +val = 3 +~~~ + +When used in a method call, `*` expands an array, passing its individual +elements as arguments. + +~~~ +a = [1, 2, 3] +foo(*a) +~~~ + +You can prepend `*` to the last argument of + +1. Left hand side of a multiple assignment. +2. Right hand side of a multiple assignment. +3. Definition of method formal arguments. +4. Actual arguments in a method call. +5. In `when` clause of `case` structure. + +For example: + +~~~ +x, *y = [7, 8, 9] +x # => 7 +y # => [8, 9] +x, = [7, 8, 9] +x # => 7 +x = [7, 8, 9] +x # => [7, 8, 9] +~~~ + +### What does `&` prepended to an argument mean? + +If the last formal argument of a method is preceded with an ampersand (`&`), +a block following the method call will be converted into a `Proc` object +and assigned to the formal parameter. + +If the last actual argument in a method invocation is a `Proc` object, +you can precede its name with an ampersand to convert in into a block. +The method may then use `yield` to call it. + +~~~ +def meth1(&b) + puts b.call(9) +end + +meth1 {|i| i + i } + +def meth2 + puts yield(8) +end + +square = proc {|i| i * i } + +meth2 {|i| i + i } +meth2 &square +~~~ + +Produces: + +~~~ +18 +16 +64 +~~~ + +### How can I specify a default value for a formal argument? + +~~~ +def greet(p1="hello", p2="world") + puts "#{p1} #{p2}" +end + +greet +greet("hi") +greet("morning", "mom") +~~~ + +Produces: + +~~~ +hello world +hi world +morning mom +~~~ + +The default value (which can be an arbitrary expression) is evaluated when +the method is invoked. It is evaluated using the scope of the method. + +### How do I pass arguments to a block? + +The formal parameters of a block appear between vertical bars at the start +of the block: + +~~~ +proc {|a, b| a <=> b } +~~~ + +These parameters are actually local variables. If an existing local variable +of the same name exists when the block executes, that variable will be +modified by the call to the block. This may or may not be a good thing. + +Typically, arguments are passed to a block using `yield` (or an iterator that +calls `yield`), or by using the `Proc.call` method. + +### Why did my object change unexpectedly? + +~~~ +A = a = b = "abc" +b.concat("d") # => "abcd" +a # => "abcd" +A # => "abcd" +~~~ + +Variables hold references to objects. The assignment `A = a = b = "abc"` puts +a reference to the string `"abc"` into `A`, `a`, and `b`. + +When you call `b.concat("d")`, you invoke the concat method on that object, +changing it from `"abc"` to `"abcd"`. Because `a` and `A` also reference that +same object, their apparent values change too. + +This is less of a problem in practice than it might appear. + +In addition, all objects may be frozen, protecting them from change. + +### Does the value of a constant ever change? + +A constant is a variable whose name starts with an upper case letter. +Constants may not be reassigned from within instance methods, +but can otherwise be changed at will. +When a constant is assigned a new value, a warning is issued. + +### Why can't I load variables from a separate file? + +Say `file1.rb` contains: + +~~~ +var1 = 99 +~~~ + +and some other file loads it in: + +~~~ +require_relative "file1" +puts var1 +~~~ + +Produces: + +~~~ +prog.rb:2:in `
': undefined local variable or method `var1' for main:Object (NameError) +~~~ + +You get an error because `load` and `require` arrange for local variables to +be stored into a separate, anonymous namespace, effectively discarding them. +This is designed to protect your code from being polluted. diff --git a/fa/documentation/faq/5/index.md b/fa/documentation/faq/5/index.md new file mode 100644 index 0000000000..372c79b380 --- /dev/null +++ b/fa/documentation/faq/5/index.md @@ -0,0 +1,237 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Iterators + +### What is an iterator? + +An iterator is a method which accepts a block or a `Proc` object. In the +source file, the block is placed immediately after the invocation of the +method. Iterators are used to produce user-defined control +structures---especially loops. + +Let's look at an example to see how this works. Iterators are often used to +repeat the same action on each element of a collection, like this: + +~~~ +data = [1, 2, 3] +data.each do |i| + puts i +end +~~~ + +Produces: + +~~~ +1 +2 +3 +~~~ + +The each method of the array `data` is passed the `do ... end` block, +and executes it repeatedly. On each call, the block is passed successive +elements of the array. + +You can define blocks with `{ ... }` in place of `do ... end`. + +~~~ +data = [1, 2, 3] +data.each { |i| + puts i +} +~~~ + +Produces: + +~~~ +1 +2 +3 +~~~ + +This code has the same meaning as the last example. However, in some cases, +precedence issues cause `do ... end` and `{ ... }` to act differently. + +~~~ +foobar a, b do ... end # foobar is the iterator. +foobar a, b { ... } # b is the iterator. +~~~ + +This is because `{ ... }` binds more tightly to the preceding expression +than does a `do ... end` block. The first example is equivalent to +`foobar(a, b) do ... end`, while the second is `foobar(a, b { ... })`. + +### How can I pass a block to an iterator? + +You simply place the block after the iterator call. You can also pass a +`Proc` object by prepending `&` to the variable or constant name that refers +to the `Proc`. + +### How is a block used in an iterator? + +{% include faq-out-of-date.html %} + +There are three ways to execute a block from an iterator method: +(1) the `yield` control structure; (2) calling a `Proc` argument +(made from a block) with `call`; and (3) using `Proc.new` followed by a call. + +The `yield` statement calls the block, optionally passing it one or more +arguments. + +~~~ +def my_iterator + yield 1, 2 +end + +my_iterator {|a, b| puts a, b } +~~~ + +Produces: + +~~~ +1 +2 +~~~ + +If a method definition has a block argument (the last formal parameter has +an ampersand (`&`) prepended), it will receive the attached block, converted +to a `Proc` object. This may be called using `prc.call(args)`. + +~~~ +def my_iterator(&b) + b.call(1, 2) +end + +my_iterator {|a, b| puts a, b } +~~~ + +Produces: + +~~~ +1 +2 +~~~ + +`Proc.new` (or the equivalent `proc` or `lambda` calls), when used in an +iterator definition, takes the block which is given to the method as its +argument and generates a procedure object from it. +(`proc` and `lambda` are effectively synonyms.) + +_[Update needed: `lambda` behaves in a slightly different way and +produces a warning `tried to create Proc object without a block`.]_ + +~~~ +def my_iterator + Proc.new.call(3, 4) + proc.call(5, 6) + lambda.call(7, 8) +end + +my_iterator {|a, b| puts a, b } +~~~ + +Produces: + +~~~ +3 +4 +5 +6 +7 +8 +~~~ + +Perhaps surprisingly, `Proc.new` and friends do not in any sense consume +the block attached to the method---each call to `Proc.new` generates a new +procedure object out of the same block. + +You can tell if there is a block associated with a method by calling +`block_given?`. + +### What does `Proc.new` without a block do? + +`Proc.new` without a block cannot generate a procedure object and an error +occurs. In a method definition, however, `Proc.new` without a block implies +the existence of a block at the time the method is called, and so no error +will occur. + +### How can I run iterators in parallel? + +Here an adoption of a solution by Matz, in +[\[ruby-talk:5252\]][ruby-talk:5252], that uses threads: + +~~~ +require "thread" + +def combine(*iterators) + queues = [] + threads = [] + + iterators.each do |it| + queue = SizedQueue.new(1) + th = Thread.new(it, queue) do |i, q| + send(i) {|x| q << x } + end + queues << queue + threads << th + end + + loop do + ary = [] + queues.each {|q| ary << q.pop } + yield ary + + iterators.size.times do |i| + return if !threads[i].status && queues[i].empty? + end + end +end + +def it1 + yield 1; yield 2; yield 3 +end + +def it2 + yield 4; yield 5; yield 6 +end + +combine(:it1, :it2) do |x| + # x is [1, 4], then [2, 5], then [3, 6] +end +~~~ + +[ruby-talk:5252]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/5252 diff --git a/fa/documentation/faq/6/index.md b/fa/documentation/faq/6/index.md new file mode 100644 index 0000000000..f8a29a62c0 --- /dev/null +++ b/fa/documentation/faq/6/index.md @@ -0,0 +1,293 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Syntax + +### What is the difference between an immediate value and a reference? +{: #immediate} + +{% include faq-out-of-date.html %} + +`Fixnum`, `true`, `nil`, and `false` are implemented as immediate values. +With immediate values, variables hold the objects themselves, rather than +references to them. + +Singleton methods cannot be defined for such objects. Two `Fixnums` of the +same value always represent the same object instance, so (for example) +instance variables for the `Fixnum` with the value `1` are shared between +all the `1`'s in the system. This makes it impossible to define a singleton +method for just one of these. + +### What is the difference between `nil` and `false`? + +First the similarity: `nil` and `false` are the only two objects +that evaluate to `false` in a boolean context. +(In other words: they are the only “falsy” values, all other +objects are “truthy”.) + +However, `nil` and `false` are instances of different classes +(`NilClass` and `FalseClass`), and have different behavior elsewhere. + +We recommend that predicate methods (those whose name ends with a question +mark) return `true` or `false`. Other methods that need to indicate failure +should return `nil`. + +### Why is an empty string not `false`? + +Q: An empty string (`""`) returns `true` in a conditional expression! +In Perl, it's `false`. + +A: But Ruby is not Perl ;-). It's very simple: in Ruby, only `nil` +and `false` are false in conditional contexts. + +You can use `empty?`, compare the string to `""`, or compare the string's +`size` or `length` to `0` to find out if a string is empty. + +### What does `:name` mean? + +A colon followed by a name generates a Symbol object which corresponds +one to one with the identifier. During the duration of a program's +execution the same Symbol object will be created for a given name or string. +Symbols can also be created with `"name".intern` or `"name".to_sym`. + +Symbol objects can represent identifiers for methods, variables, and so on. +Some methods, like `define_method`, `method_missing`, or `trace_var`, +require a symbol. Other methods, e.g. `attr_accessor`, `send`, or `autoload`, +also accept a string. + +Due to the fact that they are created only once, Symbols are often used as +hash keys. String hash keys would create a new object for every single use, +thereby causing some memory overhead. +There is even a special syntax for symbol hash keys: + +~~~ +person_1 = { :name => "John", :age => 42 } +person_2 = { name: "Jane", age: 24 } # alternate syntax +~~~ + +Symbols can also be used as enumeration values +or to assign unique values to constants: + +~~~ +status = :open # :closed, ... + +NORTH = :NORTH +SOUTH = :SOUTH +~~~ + +### How can I access the value of a symbol? + +To get the value of the variable corresponding to a symbol, you can use +`symbol.to_s` or `"#{symbol}"` to get the name of the variable, and then +eval that in the scope of the symbol to get the variable's contents: + +~~~ +a = "This is the content of `a'" +b = eval("#{:a}") +a.object_id == b.object_id # => true +~~~ + +You can also use + +~~~ +b = binding.local_variable_get(:a) +~~~ + +If your symbol corresponds to the name of a method, you can use `send`: + +~~~ +class Demo + def hello + "Hello, world" + end +end + +demo = Demo.new +demo.send(:hello) +~~~ + +Or you can use `Object#method` to return a corresponding `Method` object, +which you may then call: + +~~~ +m = demo.method(:hello) # => # +m.call # => "Hello, world" +~~~ + +### Is `loop` a control structure? + +Although `loop` looks like a control structure, it is actually a method +defined in `Kernel`. The block which follows introduces a new scope for +local variables. + +### Ruby doesn't have a post-test loop + +Q: Ruby does not have a `do { ... } while` construct, so how can I implement +loops that test the condition at the end? + +Clemens Hintze says: You can use a combination of Ruby's `begin ... end` +and the `while` or `until` statement modifiers to achieve the same effect: + +~~~ +i = 0 +begin + puts "i = #{i}" + i += 1 +end until i > 4 +~~~ + +Produces: + +~~~ +i = 0 +i = 1 +i = 2 +i = 3 +i = 4 +~~~ + +### Why can't I pass a hash literal to a method: `p {}`? + +The `{}` is parsed as a block, not a `Hash` constructor. You can force the +`{}` to be treated as an expression by making the fact that it's a parameter +explicit: `p({})`. + +### I can't get `def pos=(val)` to work! + +I have the following code, but I cannot use the method `pos = 1`. + +~~~ +def pos=(val) + @pos = val + puts @pos +end +~~~ + +Methods with `=` appended must be called with an explicit receiver +(without the receiver, you are just assigning to a local variable). +Invoke it as `self.pos = 1`. + +### What is the difference between `'\1'` and `'\\1'`? + +They have the same meaning. In a single quoted string, only `\'` and `\\` +are transformed and other combinations remain unchanged. + +However, in a double quoted string, `"\1"` is the byte `\001` +(an octal bit pattern), while `"\\1"` is the two character string +containing a backslash and the character `"1"`. + +### What is the difference between `..` and `...`? + +`..` includes the right hand side in the range, `...` does not: + +~~~ +(5..8).to_a # => [5, 6, 7, 8] +(5...8).to_a # => [5, 6, 7] +~~~ + +### What is the difference between `or` and `||`? + +Q: `p(nil || "Hello")` prints `"Hello"`, while `p(nil or "Hello")` gives a +parse error. Why? + +A: `or` has a very low precedence, `p( (nil or "Hello") )` will work. + +The precedence of `or` is for instance also lower than that of `=`, +whereas `||` has a higher precedence: + +~~~ +foo = nil || "Hello" # parsed as: foo = (nil || "Hello") +foo # => "Hello" + +# but perhaps surprisingly: + +foo = nil or "Hello" # parsed as: (foo = nil) or "Hello" +foo # => nil +~~~ + +`or` (and similarly `and`) is best used **not** for combining +boolean expressions, but for control flow, like in + +~~~ +do_something or raise "some error!" +~~~ + +where `do_something` returns `false` or `nil` when an error occurs. + +### Does Ruby have function pointers? + +A `Proc` object generated by `Proc.new`, `proc`, or `lambda` can be referenced +from a variable, so that variable could be said to be a function pointer. You +can also get references to methods within a particular object instance using +`object.method`. + +### What is the difference between `load` and `require`? + +`load` will load and execute a Ruby program (`*.rb`). + +`require` loads Ruby programs as well, but will also load binary Ruby +extension modules (shared libraries or DLLs). In addition, +`require` ensures that a feature is never loaded more than once. + +### Does Ruby have exception handling? + +Ruby supports a flexible exception handling scheme: + +~~~ +begin + statements which may raise exceptions +rescue [exception class names] + statements when an exception occurred +rescue [exception class names] + statements when an exception occurred +ensure + statements that will always run +end +~~~ + +If an exception occurs in the `begin` clause, the `rescue` clause with the +matching exception name is executed. The `ensure` clause is executed whether +an exception occurred or not. `rescue` and `ensure` clauses may be omitted. + +If no exception class is designated for a `rescue` clause, `StandardError` +exception is implied, and exceptions which are in a `is_a?` relation to +`StandardError` are captured. + +This expression returns the value of the `begin` clause. + +The latest exception is accessed by the global variable `$!` +(and so its type can be determined using `$!.type`). diff --git a/fa/documentation/faq/7/index.md b/fa/documentation/faq/7/index.md new file mode 100644 index 0000000000..309a72eed1 --- /dev/null +++ b/fa/documentation/faq/7/index.md @@ -0,0 +1,442 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Methods + +### How does Ruby choose which method to invoke? + +Ruby binds all messages to methods dynamically. It searches first for +singleton methods in the receiver, then for methods defined in the receiver's +own class, and finally for methods defined in the receiver's superclasses +(including any modules which may have been mixed in). You can see the order +of searching by displaying `ClassName.ancestors`, which shows the ancestor +classes and modules of `ClassName`. + +If after searching the alternatives a matching method could not be found, +Ruby tries to invoke a method called `method_missing`, repeating the same +search procedure to find it. This allows you to handle messages to unknown +methods, and is often used to provide dynamic interfaces to classes. + +~~~ +module Emphasizable + def emphasize + "**#{self}**" + end +end + +class String + include Emphasizable +end + +String.ancestors + # => [String, Emphasizable, Comparable, Object, Kernel, BasicObject] + +"Wow!".emphasize # => "**Wow!**" +~~~ + +When the method `emphasize` is searched for, it is not found in class +`String`, so Ruby searches next in the module `Emphasizable`. + +In order to override a method that already exists in the receiver's class, +e.g. `String#capitalize`, you need to insert the module into the +ancestor chain in front of that class, by using `prepend`: + +~~~ +module PrettyCapitalize + def capitalize + "**#{super}**" + end +end + +class String + prepend PrettyCapitalize +end + +String.ancestors + # => [PrettyCapitalize, String, Comparable, Object, Kernel, BasicObject] + +"hello".capitalize # => "**Hello**" +~~~ + +### Are `+`, `-`, `*`, ... operators? + +`+`, `-`, and the like are not operators but method calls. +They can, therefore, be overloaded by new definitions. + +~~~ +class MyString < String + def -(other) + self[0...other.size] # self truncated to other's size + end +end +~~~ + +However, the following are built-in control structures, not methods, +which cannot be overridden: + +~~~ +=, .., ..., not, ||, &&, and, or, :: +~~~ + +To overload or to define the unary `+` and `-` operators, +you need to use `+@` and `-@` as the method names. + +`=` is used to define a method to set an attribute of the object: + +~~~ +class Test + def attribute=(val) + @attribute = val + end +end + +t = Test.new +t.attribute = 1 +~~~ + +If operators such as `+` and `-` are defined, Ruby automatically handles +the self assignment forms (`+=`, `-=`, and so on). + +### Where are `++` and `--` ? + +Ruby does not have the autoincrement and autodecrement operators. +You can use `+= 1` and `-= 1` instead. + +### What is a singleton method? +{: #singleton-method} + +A singleton method is an instance method associated with one specific object. + +You create a singleton method by including the object in the definition: + +~~~ +class Foo; end + +foo = Foo.new +bar = Foo.new + +def foo.hello + puts "Hello" +end + +foo.hello +bar.hello +~~~ + +Produces: + +~~~ +Hello +prog.rb:11:in `
': undefined method `hello' for # (NoMethodError) +~~~ + +Singleton methods are useful when you want to add a method to an object and +creating a new subclass is not appropriate. + +### All these objects are fine, but does Ruby have any simple functions? + +Yes and no. Ruby has methods that look like functions in languages such +as C or Perl: + +~~~ +def hello(name) + puts "Hello, #{name}!" +end + +hello("World") +~~~ + +Produces: + +~~~ +Hello, World! +~~~ + +However, they are actually method calls with the receiver omitted. +In this case, Ruby assumes the receiver is self. + +So, `hello` resembles a function but it's actually a method belonging to +class `Object` and sent as a message to the hidden receiver self. +Ruby is a pure object-oriented language. + +Of course you can use such methods as if they were functions. + +### So where do all these function-like methods come from? + +Almost all classes in Ruby are derived from class `Object`. The definition +of class `Object` mixes in the methods defined in the `Kernel` module. +These methods are therefore available within every object in the system. + +Even if you are writing a simple Ruby program without classes, you are +actually working inside class `Object`. + +### Can I access an object's instance variables? + +An object's instance variables (those variables starting with `@`) are not +directly accessible outside the object. This promotes good encapsulation. +However, Ruby makes it easy for you to define accessors to these instance +variables in such a way that users of your class can treat instance variables +just like attributes. Just use one or more of `attr_reader`, `attr_writer`, +or `attr_accessor`. + +~~~ +class Person + attr_reader :name # read only + attr_accessor :wearing_a_hat # read/write + + def initialize(name) + @name = name + end +end + +p = Person.new("Dave") +p.name # => "Dave" +p.wearing_a_hat # => nil +p.wearing_a_hat = true +p.wearing_a_hat # => true +~~~ + +You can also define your own accessor functions (perhaps to perform +validation, or to handle derived attributes). The read accessor is simply a +method that takes no parameters, and the assignment accessor is a method name +ending in `=` that takes a single parameter. Although there can be no space +between the method name and the `=` in the method definition, you can insert +spaces there when you call the method, making it look like any other +assignment. You can also utilize self assignments such as `+=` and `-=`, +as long as the corresponding `+` or `-` methods are defined. + +### What's the difference between `private` and `protected`? + +The visibility keyword `private` makes a method callable only in a function +form, without an explicit receiver, and so it can only have `self` as its +receiver. A private method is callable only within the class in which the +method was defined or in its subclasses. + +~~~ +class Test + def foo + 99 + end + + def test(other) + p foo + p other.foo + end +end + +t1 = Test.new +t2 = Test.new + +t1.test(t2) + +# Now make `foo' private + +class Test + private :foo +end + +t1.test(t2) +~~~ + +Produces: + +~~~ +99 +99 +99 +prog.rb:8:in `test': private method `foo' called for # (NoMethodError) + from prog.rb:23:in `
' +~~~ + +Protected methods are also callable only from within their own class or +its subclasses, but they can be called both in function form and using +a receiver. For example: + +~~~ +def <=>(other) + age <=> other.age +end +~~~ + +Will compile if `age` is a protected method, but not if it is private. + +These features help you control access to your class's internals. + +### How can I change the visibility of a method? + +You change the visibility of methods using `private`, `protected`, and +`public`. When used without parameters during a class definition, they affect +the visibility of subsequent methods. When used with parameters, they change +the visibility of the named methods. + +~~~ +class Foo + def test + puts "hello" + end + private :test +end + +foo = Foo.new +foo.test +~~~ + +Produces: + +~~~ +prog.rb:9:in `
': private method `test' called for # (NoMethodError) +~~~ + +You can make a class method private using `private_class_method`. + +~~~ +class Foo + def self.test + puts "hello" + end + private_class_method :test +end + +Foo.test +~~~ + +Produces: + +~~~ +prog.rb:8:in `
': private method `test' called for Foo:Class (NoMethodError) +~~~ + +The default visibility for the methods defined in a class is public. +The exception is the instance initializing method, `initialize`. + +Methods defined at the toplevel are also public by default. + +### Can an identifier beginning with a capital letter be a method name? + +Yes, it can, but we don't do it lightly! If Ruby sees a capitalized name +followed by a space, it will probably (depending on the context) assume it's +a constant, not a method name. So, if you use capitalized method names, +always remember to put parameter lists in parentheses, and always put the +parentheses next to the method name with no intervening spaces. +(This last suggestion is a good idea anyway!) + +### Calling `super` gives an `ArgumentError`. + +Invoking `super` with no parameters in a method passes all the arguments of +that method to a method of the same name in a superclass. If the number of +arguments to the original method disagrees with that of the higher-level +method, an `ArgumentError` is raised. To get around this, simply call `super` +and pass a suitable number of arguments. + +### How can I call the method of the same name two levels up? + +`super` invokes the same named method one level up. If you are overloading a +method in a more distant ancestor, use `alias` to give it a new name before +masking it with your method definition. You can then call it using that +aliased name. + +### How can I invoke an original built-in method after redefining it? + +Within the method definition, you can use `super`. You can also use `alias` +to give it an alternative name. Finally, you can call the original method as +a singleton method of `Kernel`. + +### What is a destructive method? +{: #destructive-method} + +A destructive method is one which alters the state of an object. `String`, +`Array`, `Hash`, and others have such methods. Often there are two +versions of a method, one with a plain name, the other with the same name, +but followed by `!`. The plain version creates a copy of the receiver, makes +its change to it, and returns the copy. The “bang” version (with the `!`) +modifies the receiver in place. + +Beware, however, that there are a fair number of destructive methods that +do not have an `!`, including assignment methods (`name=`), array assignment +(`[]=`), and methods such as `Array.delete`. + +### Why can destructive methods be dangerous? + +Remember that assignment in most cases just copies object references, and that +parameter passing is equivalent to assignment. This means you can end up with +multiple variables referencing the same object. If one of those variables is +used to invoke a destructive method, the object referenced by all of them will +be changed. + +~~~ +def foo(str) + str.sub!(/foo/, "baz") +end + +obj = "foo" +foo(obj) # => "baz" +obj # => "baz" +~~~ + +In this case the actual argument is altered. + +### Can I return multiple values from a method? + +Yes and no. + +~~~ +def m1 + return 1, 2, 3 +end + +def m2 + [1, 2, 3] +end + +m1 # => [1, 2, 3] +m2 # => [1, 2, 3] +~~~ + +So, only one thing is returned, but that thing can be an arbitrarily complex +object. In the case of arrays, you can use multiple assignment to get the +effect of multiple return values. For example: + +~~~ +def foo + [20, 4, 17] +end + +a, b, c = foo +a # => 20 +b # => 4 +c # => 17 +~~~ diff --git a/fa/documentation/faq/8/index.md b/fa/documentation/faq/8/index.md new file mode 100644 index 0000000000..b57ecee3e9 --- /dev/null +++ b/fa/documentation/faq/8/index.md @@ -0,0 +1,378 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Classes and modules + +### Can a class definition be repeated? + +A class can be defined repeatedly. Each definition is added to the last +definition. If a method is redefined, the former one is overridden and lost. + +### Are there class variables? + +There are. A variable prefixed with two at signs (`@@`) is a class variable, +accessible within both instance and class methods of the class. + +~~~ +class Entity + + @@instances = 0 + + def initialize + @@instances += 1 + @number = @@instances + end + + def who_am_i + "I'm #{@number} of #{@@instances}" + end + + def self.total + @@instances + end +end + +entities = Array.new(9) { Entity.new } + +entities[6].who_am_i # => "I'm 7 of 9" +Entity.total # => 9 +~~~ + +However, you probably should use _class instance variables_ instead. + +### What is a class instance variable? + +Here the example of the previous section rewritten +using a class instance variable: + +~~~ +class Entity + + @instances = 0 + + class << self + attr_accessor :instances # provide class methods for reading/writing + end + + def initialize + self.class.instances += 1 + @number = self.class.instances + end + + def who_am_i + "I'm #{@number} of #{self.class.instances}" + end + + def self.total + @instances + end +end + +entities = Array.new(9) { Entity.new } + +entities[6].who_am_i # => "I'm 7 of 9" +Entity.instances # => 9 +Entity.total # => 9 +~~~ + +Here, `@instances` is a _class_ instance variable. It does not belong +to an instance of class `Entity`, but to the class object `Entity`, +which is an instance of class `Class`. + +Class instance variables are directly accessible only within class methods +of the class. + +### What is the difference between class variables and class instance variables? + +The main difference is the behavior concerning inheritance: +class variables are shared between a class and all its subclasses, +while class instance variables only belong to one specific class. + +Class variables in some way can be seen as global variables within +the context of an inheritance hierarchy, with all the problems +that come with global variables. +For instance, a class variable might (accidentally) be reassigned +by any of its subclasses, affecting all other classes: + +~~~ +class Woof + + @@sound = "woof" + + def self.sound + @@sound + end +end + +Woof.sound # => "woof" + +class LoudWoof < Woof + @@sound = "WOOF" +end + +LoudWoof.sound # => "WOOF" +Woof.sound # => "WOOF" (!) +~~~ + +Or, an ancestor class might later be reopened and changed, +with possibly surprising effects: + +~~~ +class Foo + + @@var = "foo" + + def self.var + @@var + end +end + +Foo.var # => "foo" (as expected) + +class Object + @@var = "object" +end + +Foo.var # => "object" (!) +~~~ + +So, unless you exactly know what you are doing and explicitly need +this kind of behavior, you better should use class instance variables. + +### Does Ruby have class methods? +{: #class-method} + +A [singleton method](../7/#singleton-method) of a class object is called a +class method. +(Actually, the class method is defined in the metaclass, but that is pretty +much transparent). Another way of looking at it is to say that a class method +is a method whose receiver is a class. + +It all comes down to the fact that you can call class methods without having +to have instances of that class (objects) as the receiver. + +Let's create a singleton method of class `Foo`: + +~~~ +class Foo + def self.test + "this is foo" + end +end + +# It is invoked this way. + +Foo.test # => "this is foo" +~~~ + +In this example, `Foo.test` is a class method. + +Instance methods which are defined in class `Class` can be used +as class methods for every(!) class. + +### What is a singleton class? + +A singleton class is an anonymous class that is created by subclassing the +class associated with a particular object. Singleton classes are another +way of extending the functionality associated with just one object. + +Take the lowly `Foo`: + +~~~ +class Foo + def hello + "hello" + end +end + +foo = Foo.new +foo.hello # => "hello" +~~~ + +Now let's say we need to add class-level functionality to just this one +instance: + +~~~ +class << foo + attr_accessor :name + + def hello + "hello, I'm #{name}" + end +end + +foo.name = "Tom" +foo.hello # => "hello, I'm Tom" +Foo.new.hello # => "hello" +~~~ + +We've customized `foo` without changing the characteristics of `Foo`. + +### What is a module function? + +{% include faq-out-of-date.html %} + +A module function is a private, singleton method defined in a module. +In effect, it is similar to a [class method](#class-method), +in that it can be called using the `Module.method` notation: + +~~~ +Math.sqrt(2) # => 1.414213562 +~~~ + +However, because modules can be mixed in to classes, module functions can +also be used without the prefix (that's how all those `Kernel` functions are +made available to objects): + +~~~ +include Math +sqrt(2) # => 1.414213562 +~~~ + +Use `module_function` to make a method a module function. + +~~~ +module Test + def thing + # ... + end + module_function :thing +end +~~~ + +### What is the difference between a class and a module? + +Modules are collections of methods and constants. They cannot generate +instances. Classes may generate instances (objects), and have per-instance +state (instance variables). + +Modules may be mixed in to classes and other modules. The mixed in module's +constants and methods blend into that class's own, augmenting the class's +functionality. Classes, however, cannot be mixed in to anything. + +A class may inherit from another class, but not from a module. + +A module may not inherit from anything. + +### Can you subclass modules? + +No. However, a module may be included in a class or another module to mimic +multiple inheritance (the mixin facility). + +This does not generate a subclass (which would require inheritance), but does +generate an `is_a?` relationship between the class and the module. + +### Give me an example of a mixin + +The module `Comparable` provides a variety of comparison operators +(`<`, `<=`, `==`, `>=`, `>`, `between?`). It defines these in terms +of calls to the general comparison method, `<=>`. However, it does +not itself define `<=>`. + +Say you want to create a class where comparisons are based on the number of +legs an animal has: + +~~~ +class Animal + include Comparable + + attr_reader :legs + + def initialize(name, legs) + @name, @legs = name, legs + end + + def <=>(other) + legs <=> other.legs + end + + def inspect + @name + end +end + +c = Animal.new("cat", 4) +s = Animal.new("snake", 0) +p = Animal.new("parrot", 2) + +c < s # => false +s < c # => true +p >= s # => true +p.between?(s, c) # => true +[p, s, c].sort # => [snake, parrot, cat] +~~~ + +All `Animal` must do is define its own semantics for the operator `<=>`, +and mix in the `Comparable` module. `Comparable`'s methods now become +indistinguishable from `Animal`'s and your class suddenly sprouts new +functionality. And because the same `Comparable` module is used by many +classes, your new class will share a consistent and well understood semantics. + +### Why are there two ways of defining class methods? + +You can define a class method in the class definition, and you can define +a class method at the top level. + +~~~ +class Demo + def self.class_method + end +end + +def Demo.another_class_method +end +~~~ + +There is only one significant difference between the two. +In the class definition you can refer to the class's constants directly, +as the constants are within scope. At the top level, you have to use the +`Class::CONST` notation. + +### What is the difference between `include` and `extend`? + +{% include faq-out-of-date.html %} + +`include` mixes a module into a class or another module. Methods from that +module are called function-style (without a receiver). + +`extend` is used to include a module in an object (instance). +Methods in the module become methods in the object. + +### What does `self` mean? + +`self` is the currently executing receiver, the object to which a method +is applied. A function-style method call implies `self` as the receiver. diff --git a/fa/documentation/faq/9/index.md b/fa/documentation/faq/9/index.md new file mode 100644 index 0000000000..555b5123f2 --- /dev/null +++ b/fa/documentation/faq/9/index.md @@ -0,0 +1,372 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +{% include faq-notice.md %} + +## Built-in libraries + +### What does `instance_methods(false)` return? + +The method `instance_methods` returns an array containing the names of +instance methods in the receiving class or module. This will include +the methods in superclasses and in mixed in modules. + +`instance_methods(false)` or `instance_methods(nil)` returns the names +of just those methods which are defined in the receiver. + +### How do random number seeds work? + +If `rand` is called without a prior call to `srand`, +Ruby's pseudo-random number generator uses a random(ish) seed that +amongst other things uses an entropy source provided by the OS, +if available. +Successive runs of a program that does not use `srand` will generate +different sequences of random numbers. + +For testing purposes, you can get a predictable behavior with the same +series of numbers each time the program is run by calling `srand` +with a constant seed. + +### I read a file and changed it, but the file on disk has not changed. + +~~~ +File.open("example", "r+").readlines.each_with_index do |line, i| + line[0,0] = "#{i+1}: " +end +~~~ + +This program does _not_ add line numbers to the file `example`. It does read +the contents of the file, and for each line read does prepend the line number, +but the data is never written back. The code below _does_ update the file +(although somewhat dangerously, as it takes no backup before starting the +update): + +~~~ +File.open("example", "r+") do |f| + lines = f.readlines + lines.each_with_index {|line, i| line[0,0] = "#{i+1}: " } + f.rewind + f.puts lines +end +~~~ + +### How can I process a file and update its contents? + +Using the command-line option `-i`, or built-in variable `$-i`, you can read +a file and replace it. + +The code in the preceding question, which added line numbers to a file, +is probably best written using this technique: + +~~~ +$ ruby -i -ne 'print "#$.: #$_"' example +~~~ + +If you want to preserve the original file, use `-i.bak` to create a backup. + +### I wrote a file, copied it, but the end of the copy seems to be lost. + +This code will not work correctly: + +~~~ +require "fileutils" + +File.open("file", "w").puts "This is a file." +FileUtils.cp("file", "newfile") +~~~ + +Because I/O is buffered, `file` is being copied before its contents have been +written to disk. `newfile` will probably be empty. However, when the program +terminates, the buffers are flushed, and file has the expected content. + +The problem doesn't arise if you make sure that `file` is closed before +copying: + +~~~ +require "fileutils" + +File.open("file", "w") {|f| f.puts "This is a file." } +FileUtils.cp("file", "newfile") +~~~ + +### How can I get the line number in the current input file? + +As you read from a file, Ruby increments a line number counter in the global +variable `$.`. This is also available using the `lineno` attribute of the +`File` object. + +The special constant `ARGF` is a file-like object that can be used to read +all the input files specified on the command line (or standard input if there +are no files). `ARGF` is used implicitly by code such as: + +~~~ +while gets + print $_ +end +~~~ + +In this case, `$.` will be the cumulative number of lines read across all +input files. To get the line number in the current file, use + +~~~ +ARGF.file.lineno +~~~ + +You can also get the name of the current file using `ARGF.file.path`. + +### How can I use `less` to display my program's output? + +I tried the following, but nothing came out: + +~~~ +open("|less", "w").puts "abc" +~~~ + +That's because the program ends immediately, and `less` never gets a chance +to see the stuff you've written to it, never mind to display it. +Make sure that the IO is properly closed and it will wait until `less` ends. + +~~~ +open("|less", "w") {|f| f.puts "abc" } +~~~ + +### What happens to a `File` object which is no longer referenced? + +A `File` object which is no longer referenced becomes eligible for garbage +collection. The file will be closed automatically when the `File` object is +garbage collected. + +### I feel uneasy if I don't close a file. + +There are at least four good ways of ensuring that you do close a file: + +~~~ +# (1) +f = File.open("file") +begin + f.each {|line| print line } +ensure + f.close +end + +# (2) +File.open("file") do |f| + f.each {|line| print line } +end + +# (3) +File.foreach("file") {|line| print line } + +# (4) +File.readlines("file").each {|line| print line } +~~~ + +### How can I sort files by their modification time? + +~~~ +Dir.glob("*").sort {|a, b| File.mtime(b) <=> File.mtime(a) } +~~~ + +Although this works (returning a list in reverse chronological order) it +isn't very efficient, as it fetches the files' modification times from the +operating system on every comparison. + +More efficiency can be bought with some extra complexity: + +~~~ +Dir.glob("*").map {|f| [File.mtime(f), f] }. + sort {|a, b| b[0] <=> a[0] }.map(&:last) +~~~ + +### How can I count the frequency of words in a file? + +~~~ +freq = Hash.new(0) +File.read("example").scan(/\w+/) {|word| freq[word] += 1 } +freq.keys.sort.each {|word| puts "#{word}: #{freq[word]}" } +~~~ + +Produces: + +~~~ +and: 1 +is: 3 +line: 3 +one: 1 +this: 3 +three: 1 +two: 1 +~~~ + +### How can I sort strings in alphabetical order? + +If you want your strings to sort 'AAA', 'BBB', ..., 'ZZZ', 'aaa', 'bbb', +then the built-in comparison will work just fine. + +If you want to sort ignoring case distinctions, compare downcased versions of +the strings in the sort block: + +~~~ +array = %w( z bB Bb bb Aa BB aA AA aa a A ) +array.sort {|a, b| a.downcase <=> b.downcase } + # => ["a", "A", "Aa", "aA", "AA", "aa", "bB", "Bb", "bb", "BB", "z"] +~~~ + +If you want to sort so that the 'A's and 'a's come together, but 'a' is +considered greater than 'A' (so 'Aa' comes after 'AA' but before 'AB'), use: + +~~~ +array.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b } + # => ["A", "a", "AA", "Aa", "aA", "aa", "BB", "Bb", "bB", "bb", "z"] +~~~ + +### How can I expand tabs to spaces? +{: #tab-expansion} + +If `a` holds the string to be expanded, you could use one of: + +~~~ +1 while a.sub!(/(^[^\t]*)\t(\t*)/){$1+" "*(8-$1.size%8+8*$2.size)} +# or +1 while a.sub!(/\t(\t*)/){" "*(8-$~.begin(0)%8+8*$1.size)} +# or +a.gsub!(/([^\t]{8})|([^\t]*)\t/n){[$+].pack("A8")} +~~~ + +### How can I escape a backslash in a regular expression? + +`Regexp.quote('\\')` escapes a backslash. + +It gets trickier if you are using `sub` and `gsub`. Say you write +`gsub(/\\/, '\\\\')`, hoping to replace each backslash with two. +The second argument is converted to `'\\'` in syntax analysis. When the +substitution occurs, the regular expression engine converts this to `'\'`, +so the net effect is to replace each single backslash with another single +backslash. You need to write `gsub(/\\/, '\\\\\\')`! + +However, using the fact that `\&` contains the matched string, you could also +write `gsub(/\\/, '\&\&')`. + +If you use the block form of `gsub`, i.e. `gsub(/\\/) { '\\\\' }`, the string +for substitution is analyzed only once (during the syntax pass) and the +result is what you intended. + +### What is the difference between `sub` and `sub!`? + +In `sub`, a copy of the receiver is generated, substituted, and returned. + +In `sub!`, the receiver is altered and returned if any match was found. +Otherwise, `nil` is returned. + +Methods like `sub!`, which alter the attribute of the receiver, +are called [destructive methods](../7/#destructive-method). +Usually, if there are two similar methods and one is destructive, +the destructive one has a suffix `!`. + +~~~ +def foo(str) + str.sub(/foo/, "baz") +end + +obj = "foo" +foo(obj) # => "baz" +obj # => "foo" + +def foo(str) + str.sub!(/foo/, "baz") +end + +foo(obj) # => "baz" +obj # => "baz" +~~~ + +### Where does `\Z` match? + +`\Z` matches just before the last `\n` (newline) if the string ends +with a `\n`, otherwise it matches at the end of a string. + +### What is the difference between `thread` and `fork`? + +{% include faq-out-of-date.html %} + +Ruby threads are implemented within the interpreter, while `fork` invokes the +operating system to create a separately executing subprocess. + +Thread and fork have the following characteristics: + +* `fork` is slow, `thread` is not. +* `fork` does not share the memory space. +* `thread` does not cause thrashing. +* `thread` works on DOS. +* When `thread` gets in a deadlock, the whole process stops. +* `fork` can take advantage of pauses waiting for I/O to complete, + `thread` does not (at least not without some help). + +You probably shouldn't mix `fork` and `thread`. + +### How can I use `Marshal`? + +`Marshal` is used to store an object in a file or a string, and later +reconstitute it. Objects may be stored using: + +~~~ +Marshal.dump( obj [, io ] [, lev] ) +~~~ + +`io` is a writable `IO` object, `lev` designates the level to which objects +are dereferred and stored. If `lev` levels of dereferring are done and object +references still exist, then `dump` stores just the reference, not the object +referenced. This is not good, as these referenced objects cannot be +subsequently reconstructed. + +If `io` is omitted, the marshaled objects are returned in a string. + +You can load objects back using: + +~~~ +obj = Marshal.load(io) +# or +obj = Marshal.load(str) +~~~ + +where `io` is a readable `IO` object, `str` is the dumped string. + +### How can I use `trap`? + +`trap` associates code blocks with external events (signals). + +~~~ +trap("PIPE") { raise "SIGPIPE" } +~~~ diff --git a/fa/documentation/faq/index.md b/fa/documentation/faq/index.md new file mode 100644 index 0000000000..b6c85da8df --- /dev/null +++ b/fa/documentation/faq/index.md @@ -0,0 +1,62 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: fa + +header: | +
+ Content + | + 1 + | + 2 + | + 3 + | + 4 + | + 5 + | + 6 + | + 7 + | + 8 + | + 9 + | + 10 + | + 11 +
+

Official Ruby FAQ

+ +--- + +This document contains Frequently Asked Questions about Ruby with answers. +{: .summary} + +This FAQ is based on "[The Ruby Language FAQ][original-faq]" originally +compiled by Shugo Maeda and translated into English by Kentaro Goto. +Thanks to Zachary Scott and Marcus Stollsteimer for incorporating +the FAQ into the site and for a major overhaul of the content. + +The code examples in this document have been run using Ruby 2.3. + +[original-faq]: http://ruby-doc.org/docs/ruby-doc-bundle/FAQ/FAQ.html + +{% include faq-notice.md %} + +## Content + +* [General questions](1/) +* [How does Ruby stack up against...?](2/) +* [Installing Ruby](3/) +* [Variables, constants, and arguments](4/) +* [Iterators](5/) +* [Syntax](6/) +* [Methods](7/) +* [Classes and modules](8/) +* [Built-in libraries](9/) +* [Extension library](10/) +* [Other features](11/) diff --git a/fa/documentation/index.md b/fa/documentation/index.md new file mode 100644 index 0000000000..30da430601 --- /dev/null +++ b/fa/documentation/index.md @@ -0,0 +1,175 @@ +--- +layout: page +title: "مستندات" +lang: fa +--- + +Guides, tutorials, and reference material to help you learn more about Ruby +{: .summary} + +### Installing Ruby + +Although you can easily [try Ruby in your browser][1], you can also read +the [installation guide](installation/) for help on installing Ruby. + +### Getting Started + +[Official FAQ](/en/documentation/faq/) +: The official frequently asked questions. + +[Ruby Koans][2] +: The Koans walk you along the path to enlightenment in order to learn + Ruby. The goal is to learn the Ruby language, syntax, structure, and + some common functions and libraries. We also teach you culture. + +[Why’s (Poignant) Guide to Ruby][5] +: An unconventional but interesting book that will teach you Ruby + through stories, wit, and comics. Originally created by *why the lucky + stiff*, this guide remains a classic for Ruby learners. + +[Learning Ruby][6] +: A thorough collection of Ruby study notes for those who are new to the + language and in search of a solid introduction to Ruby’s concepts and + constructs. + +[Ruby Essentials][7] +: Ruby Essentials is a free on-line book designed to provide a concise + and easy to follow guide to learning Ruby. + +[Learn to Program][8] +: A wonderful little tutorial by Chris Pine for programming newbies. If + you don’t know how to program, start here. + +[Learn Ruby the Hard Way][38] +: A very good set of exercises with explanations that guide you from + the absolute basics of Ruby all the way to OOP and web development. + +### Manuals + +[Programming Ruby][9] +: The seminal work on Ruby in English, this first edition of the + [Pragmatic Programmers’ book][10] is available for free online. + +[Ruby User’s Guide][11] +: Translated from the original Japanese version written by Yukihiro + Matsumoto (the creator of Ruby), this version, by Goto Kentaro and + Mark Slagell, is a nice overview of many aspects of the Ruby language. + +[The Ruby Programming Wikibook][12] +: A free online manual with beginner and intermediate content plus a + thorough language reference. + +### Reference Documentation + +[Official API Documentation][docs-rlo-en] +: The official Ruby API documentation for different versions including + the currently unreleased (trunk) version. + +[Ruby Core Reference][13] +: Pulled straight from the source code using [RDoc][14], this reference + work documents all of the core classes and modules (like String, + Array, Symbol, etc…). + +[Ruby Standard Library Reference][15] +: Also pulled from the source code using RDoc, this reference work + documents the standard library. + +[Ruby C API Reference][extensions] +: The official introduction to Ruby's C API. + Great if you want to write C extensions + or contribute to Ruby’s development. + +[RubyDoc.info][16] +: The one-stop web site for reference documentation about Ruby gems and + GitHub-hosted Ruby projects. + +[Ruby & Rails Searchable API Docs][17] +: Rails and Ruby documentation with smart searching. + +[APIdock][18] +: Ruby, Rails and RSpec documentation with users’ notes. + +### Editors and IDEs + +For coding in Ruby you can use the default editor of your operating +system. By the way, to be more effective in coding, it is worth to +choose a source code editor with basic Ruby support (e.g. +syntax-highlighting, file browsing) or an integrated development +environment with advanced features (e.g. code completion, refactoring, +testing support). + +Here is a list of popular tools used by Rubyists: + +* Linux and cross-platform tools: + * [Aptana Studio][19] + * [Emacs][20] with [Ruby mode][21] and [Rsense][22] + * [Geany][23] + * [gedit][24] + * [Vim][25] with [vim-ruby][26] plugin and [Rsense][22] + * [RubyMine][27] + * [SciTe][28] + * [NetBeans][36] + * [Sublime Text][37] + * [Atom][atom] + * [Visual Studio Code][vscode] + +* On Windows: + * [Notepad++][29] + * [E-TextEditor][30] + * [Ruby In Steel][31] + +* On macOS: + * [TextMate][32] + * [TextWrangler][33] + * [Dash][39] (documentation browser) + +### Further Reading + +[Ruby-doc.org][34] maintains a comprehensive list of English +documentation sources. There are also plenty of [books about Ruby][35]. +If you have questions about Ruby the +[mailing list](/en/community/mailing-lists/) is a great place to start. + + + +[1]: https://ruby.github.io/TryRuby/ +[2]: http://rubykoans.com/ +[5]: http://mislav.uniqpath.com/poignant-guide/ +[6]: http://rubylearning.com/ +[7]: http://www.techotopia.com/index.php/Ruby_Essentials +[8]: http://pine.fm/LearnToProgram/ +[9]: http://www.ruby-doc.org/docs/ProgrammingRuby/ +[10]: http://pragmaticprogrammer.com/titles/ruby/index.html +[11]: http://www.rubyist.net/~slagell/ruby/ +[12]: http://en.wikibooks.org/wiki/Ruby_programming_language +[13]: http://www.ruby-doc.org/core +[14]: https://ruby.github.io/rdoc/ +[15]: http://www.ruby-doc.org/stdlib +[extensions]: https://docs.ruby-lang.org/en/trunk/extension_rdoc.html +[16]: http://www.rubydoc.info/ +[17]: http://rubydocs.org/ +[18]: http://apidock.com/ +[19]: http://www.aptana.com/ +[20]: http://www.gnu.org/software/emacs/ +[21]: http://www.emacswiki.org/emacs/RubyMode +[22]: http://rsense.github.io/ +[23]: http://www.geany.org/ +[24]: http://projects.gnome.org/gedit/screenshots.html +[25]: http://www.vim.org/ +[26]: https://github.com/vim-ruby/vim-ruby +[27]: http://www.jetbrains.com/ruby/ +[28]: http://www.scintilla.org/SciTE.html +[29]: http://notepad-plus-plus.org/ +[30]: http://www.e-texteditor.com/ +[31]: http://www.sapphiresteel.com/ +[32]: http://macromates.com/ +[33]: http://www.barebones.com/products/textwrangler/ +[34]: http://ruby-doc.org +[35]: http://www.ruby-doc.org/bookstore +[36]: https://netbeans.org/ +[37]: http://www.sublimetext.com/ +[38]: http://ruby.learncodethehardway.org/ +[39]: http://kapeli.com/dash +[docs-rlo-en]: https://docs.ruby-lang.org/en/ +[atom]: https://atom.io/ +[vscode]: https://code.visualstudio.com/ diff --git a/fa/documentation/installation/index.md b/fa/documentation/installation/index.md new file mode 100644 index 0000000000..f964b79ae1 --- /dev/null +++ b/fa/documentation/installation/index.md @@ -0,0 +1,355 @@ +--- +layout: page +title: "نصب روبی" +lang: fa +--- + +With package managers or third-party tools, you have plenty of options +to install and manage Ruby. +{: .summary} + +You may already have Ruby installed on your computer. You can check +inside a [terminal emulator][terminal] by typing: + +{% highlight sh %} +ruby -v +{% endhighlight %} + +This should output some information on the installed Ruby version. + +## Choose Your Installation Method + +There are several ways to install Ruby: + +* On a UNIX-like operating system, using your system's + **package manager** is easiest. + However, the packaged Ruby version may not be the newest one. +* **Installers** can be used to install a specific or multiple + Ruby versions. There is also an installer for Windows. +* **Managers** help you to switch between multiple Ruby versions + on your system. +* Finally, you can also **build Ruby from source**. + +Here are available installation methods: + +* [Package Management Systems](#package-management-systems) + * [Debian, Ubuntu](#apt) + * [Windows WSL Ubuntu](#apt-wsl) + * [CentOS, Fedora, RHEL](#yum) + * [Snap](#snap) + * [Gentoo](#portage) + * [Arch Linux](#pacman) + * [macOS](#homebrew) + * [FreeBSD](#freebsd) + * [OpenIndiana](#openindiana) + * [Other Distributions](#other-systems) +* [Installers](#installers) + * [ruby-build](#ruby-build) + * [ruby-install](#ruby-install) + * [RubyInstaller](#rubyinstaller) (Windows) + * [RailsInstaller and Ruby Stack](#railsinstaller) +* [Managers](#managers) + * [chruby](#chruby) + * [rbenv](#rbenv) + * [RVM](#rvm) + * [uru](#uru) +* [Building from source](#building-from-source) + + +## Package Management Systems +{: #package-management-systems} + +If you cannot compile your own Ruby, and you do not want to use a +third-party tool, you can use your system's package manager to install Ruby. + +Some members of the Ruby community feel that you should avoid package +managers to install Ruby and that you should use dedicated tools instead. + +It is possible that major package managers will install older Ruby +versions instead of the latest release. To use the latest Ruby release, +check that the package name matches its version number. Or use a +dedicated [installer][installers]. + + +### apt (Debian or Ubuntu) +{: #apt} + +Debian GNU/Linux and Ubuntu use the apt package manager. You can use it +like this: + +{% highlight sh %} +$ sudo apt-get install ruby-full +{% endhighlight %} + +### apt (Windows WSL Ubuntu) +{: #apt-wsl} + +If you use Windows 10, you can use Linux Ubuntu OS with WSL. And you can also use Ruby with apt. + +There is an information that how to install WSL in this page: + +[Windows Subsystem for Linux Installation Guide for Windows 10](https://docs.microsoft.com/en-us/windows/wsl/install-win10) + +You can use the apt same as Linux OS like this: + +{% highlight sh %} +$ sudo apt-get install ruby-full +{% endhighlight %} + +Or you can also use Ruby managers like the rbenv on WSL. + +### yum (CentOS, Fedora, or RHEL) +{: #yum} + +CentOS, Fedora, and RHEL use the yum package manager. +You can use it like this: + +{% highlight sh %} +$ sudo yum install ruby +{% endhighlight %} + +The installed version is typically the latest version of Ruby available +at the release time of the specific distribution version. + + +### snap (Ubuntu or other Linux distributions) +{: #snap} + +Snap is a package manager developed by Canonical. +It is available out-of-the-box on Ubuntu, but snap also works +on many other Linux distributions. +You can use it like this: + +{% highlight sh %} +$ sudo snap install ruby --classic +{% endhighlight %} + +We have several channels per Ruby minor series. +For instance, the following commands switch to Ruby 2.3: + +{% highlight sh %} +$ sudo snap switch ruby --channel=2.3/stable +$ sudo snap refresh +{% endhighlight %} + + +### portage (Gentoo) +{: #portage} + +Gentoo uses the portage package manager. + +{% highlight sh %} +$ sudo emerge dev-lang/ruby +{% endhighlight %} + +To install a specific version, set `RUBY_TARGETS` in your `make.conf`. +See the [Gentoo Ruby Project website][gentoo-ruby] for details. + + +### pacman (Arch Linux) +{: #pacman} + +Arch Linux uses a package manager named pacman. +To get Ruby, just do this: + +{% highlight sh %} +$ sudo pacman -S ruby +{% endhighlight %} + +This should install the latest stable Ruby version. + + +### Homebrew (macOS) +{: #homebrew} + +Ruby versions 2.0 and above are included by default in macOS releases +since at least El Capitan (10.11). + +[Homebrew][homebrew] is a commonly used package manager on macOS. +Installing Ruby using Homebrew is easy: + +{% highlight sh %} +$ brew install ruby +{% endhighlight %} + +This should install the latest Ruby version. + + +### FreeBSD +{: #freebsd} + +FreeBSD offers both pre-packaged and source-based methods to install Ruby. +Prebuilt packages can be installed via the pkg tool: + +{% highlight sh %} +$ pkg install ruby +{% endhighlight %} + +A source-based method can be used to install Ruby using the +[Ports Collection][freebsd-ports-collection]. This is useful if you want +to customize the build configuration options. + +More information about Ruby and its surrounding ecosystem on FreeBSD +can be found on the [FreeBSD Ruby Project website][freebsd-ruby]. + + +### Ruby on OpenIndiana +{: #openindiana} + +To install Ruby on [OpenIndiana][openindiana], please use the +Image Packaging System (IPS) client. +This will install the Ruby binaries and RubyGems directly +from the OpenIndiana repositories. It’s easy: + +{% highlight sh %} +$ pkg install runtime/ruby +{% endhighlight %} + +However, the third-party tools might be a good way to obtain the +latest version of Ruby. + + +### Other Distributions +{: #other-systems} + +On other systems, you can search the package repository of your Linux +distribution's manager for Ruby. Alternatively, you can use a +[third-party installer][installers]. + + +## Installers +{: #installers} + +If the version of Ruby provided by your system or package manager is out +of date, a newer one can be installed using a third-party installer. + +Some installers allow you to install multiple versions on the same +system; associated managers can help to switch between the different +Rubies. + +If you are planning to use [RVM](#rvm) as a version manager you don't +need a separate installer, it comes with its own. + + +### ruby-build +{: #ruby-build} + +[ruby-build][ruby-build] is a plugin for [rbenv](#rbenv) that allows you +to compile and install different versions of Ruby. ruby-build can also +be used as a standalone program without rbenv. It is available for macOS, +Linux, and other UNIX-like operating systems. + + +### ruby-install +{: #ruby-install} + +[ruby-install][ruby-install] allows you to compile and install different +versions of Ruby into arbitrary directories. [chruby](#chruby) is a +complimentary tool used to switch between Ruby versions. It is available +for macOS, Linux, and other UNIX-like operating systems. + + +### RubyInstaller +{: #rubyinstaller} + +On Windows, [RubyInstaller][rubyinstaller] gives you everything you need +to set up a full Ruby development environment. + +Just download it, run it, and you are done! + + +### RailsInstaller and Ruby Stack +{: #railsinstaller} + +If you are installing Ruby in order to use Ruby on Rails, +you can use the following installers: + +* [RailsInstaller][railsinstaller] uses [RubyInstaller][rubyinstaller] + but gives you extra tools that help with Rails development. It + supports macOS and Windows. +* [Bitnami Ruby Stack][rubystack] provides a complete development + environment for Rails. It supports macOS, Linux, Windows, virtual + machines, and cloud images. + + +## Managers +{: #managers} + +Many Rubyists use Ruby managers to manage multiple Rubies. They allow +easy or even automatic switching between Ruby versions depending on the +project and other advantages but are not officially supported. You can +however find support within their respective communities. + + +### chruby +{: #chruby} + +[chruby][chruby] allows you to switch between multiple Rubies. It can +manage Rubies installed by [ruby-install](#ruby-install) or even built +from source. + + +### rbenv +{: #rbenv} + +[rbenv][rbenv] allows you to manage multiple installations of Ruby. +While it can't install Ruby by default, its [ruby-build](#ruby-build) +plugin can. Both tools are available for macOS, Linux, or other +UNIX-like operating systems. + + +### RVM ("Ruby Version Manager") +{: #rvm} + +[RVM][rvm] allows you to install and manage multiple installations of +Ruby on your system. It can also manage different gemsets. It is +available for macOS, Linux, or other UNIX-like operating systems. + + +### uru +{: #uru} + +[Uru][uru] is a lightweight, multi-platform command line tool that helps you +to use multiple Rubies on macOS, Linux, or Windows systems. + + +## Building from Source +{: #building-from-source} + +Of course, you can install Ruby from source. +[Download][download] and unpack a tarball, then just do this: + +{% highlight sh %} +$ ./configure +$ make +$ sudo make install +{% endhighlight %} + +By default, this will install Ruby into `/usr/local`. +To change, pass the `--prefix=DIR` option to the `./configure` script. + +You can find more information about building from source in the +[Ruby README file][readme]. + +Using the third-party tools or package managers might be a better idea, +though, because the installed Ruby won't be managed by any tools. + + +[rvm]: http://rvm.io/ +[rbenv]: https://github.com/rbenv/rbenv#readme +[ruby-build]: https://github.com/rbenv/ruby-build#readme +[ruby-install]: https://github.com/postmodern/ruby-install#readme +[chruby]: https://github.com/postmodern/chruby#readme +[uru]: https://bitbucket.org/jonforums/uru +[rubyinstaller]: https://rubyinstaller.org/ +[railsinstaller]: http://railsinstaller.org/ +[rubystack]: http://bitnami.com/stack/ruby/installer +[openindiana]: http://openindiana.org/ +[gentoo-ruby]: http://www.gentoo.org/proj/en/prog_lang/ruby/ +[freebsd-ruby]: https://wiki.freebsd.org/Ruby +[freebsd-ports-collection]: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html +[homebrew]: http://brew.sh/ +[terminal]: https://en.wikipedia.org/wiki/List_of_terminal_emulators +[download]: /en/downloads/ +[installers]: /en/documentation/installation/#installers +[readme]: https://github.com/ruby/ruby#how-to-compile-and-install diff --git a/fa/documentation/quickstart/2/index.md b/fa/documentation/quickstart/2/index.md new file mode 100644 index 0000000000..6ff7c46b8e --- /dev/null +++ b/fa/documentation/quickstart/2/index.md @@ -0,0 +1,125 @@ +--- +layout: page +title: "روبی در ۲۰ دقیقه" +lang: fa + +header: | +
+ ۱ + | + ۲ + | + ۳ + | + ۴ +
+

روبی در ۲۰ دقیقه

+ +--- + +What if we want to say “Hello” a lot without getting our fingers all +tired? We need to define a method! + +{% highlight irb %} +irb(main):010:0> def hi +irb(main):011:1> puts "Hello World!" +irb(main):012:1> end +=> :hi +{% endhighlight %} + +The code `def hi` starts the definition of the method. It tells Ruby that +we’re defining a method, that its name is `hi`. The next line is the body +of the method, the same line we saw earlier: `puts "Hello World"`. +Finally, the last line `end` tells Ruby we’re done defining the method. +Ruby’s response `=> :hi` tells us that it knows we’re done defining the +method. This response could be `=> nil` for Ruby 2.0 and earlier versions. +But, it's not important here, so let's go on. + +## The Brief, Repetitive Lives of a Method + +Now let’s try running that method a few times: + +{% highlight irb %} +irb(main):013:0> hi +Hello World! +=> nil +irb(main):014:0> hi() +Hello World! +=> nil +{% endhighlight %} + +Well, that was easy. Calling a method in Ruby is as easy as just +mentioning its name to Ruby. If the method doesn’t take parameters +that’s all you need. You can add empty parentheses if you’d like, but +they’re not needed. + +What if we want to say hello to one person, and not the whole world? +Just redefine `hi` to take a name as a parameter. + +{% highlight irb %} +irb(main):015:0> def hi(name) +irb(main):016:1> puts "Hello #{name}!" +irb(main):017:1> end +=> :hi +irb(main):018:0> hi("Matz") +Hello Matz! +=> nil +{% endhighlight %} + +So it works… but let’s take a second to see what’s going on here. + +## Holding Spots in a String + +What’s the `#{name}` bit? That’s Ruby’s way of inserting something into +a string. The bit between the braces is turned into a string (if it +isn’t one already) and then substituted into the outer string at that +point. You can also use this to make sure that someone’s name is +properly capitalized: + +{% highlight irb %} +irb(main):019:0> def hi(name = "World") +irb(main):020:1> puts "Hello #{name.capitalize}!" +irb(main):021:1> end +=> :hi +irb(main):022:0> hi "chris" +Hello Chris! +=> nil +irb(main):023:0> hi +Hello World! +=> nil +{% endhighlight %} + +A couple of other tricks to spot here. One is that we’re calling the +method without parentheses again. If it’s obvious what you’re doing, the +parentheses are optional. The other trick is the default parameter +`World`. What this is saying is “If the name isn’t supplied, use the +default name of `"World"`”. + +## Evolving Into a Greeter + +What if we want a real greeter around, one that remembers your name and +welcomes you and treats you always with respect. You might want to use +an object for that. Let’s create a “Greeter” class. + +{% highlight irb %} +irb(main):024:0> class Greeter +irb(main):025:1> def initialize(name = "World") +irb(main):026:2> @name = name +irb(main):027:2> end +irb(main):028:1> def say_hi +irb(main):029:2> puts "Hi #{@name}!" +irb(main):030:2> end +irb(main):031:1> def say_bye +irb(main):032:2> puts "Bye #{@name}, come back soon." +irb(main):033:2> end +irb(main):034:1> end +=> :say_bye +{% endhighlight %} + +The new keyword here is `class`. This defines a new class called Greeter +and a bunch of methods for that class. Also notice `@name`. This is an +instance variable, and is available to all the methods of the class. As +you can see it’s used by `say_hi` and `say_bye`. + +So how do we get this Greeter class set in motion? +[Create an object.](../3/) diff --git a/fa/documentation/quickstart/3/index.md b/fa/documentation/quickstart/3/index.md new file mode 100644 index 0000000000..264ede4c51 --- /dev/null +++ b/fa/documentation/quickstart/3/index.md @@ -0,0 +1,229 @@ +--- +layout: page +title: "روبی در ۲۰ دقیقه" +lang: fa + +header: | +
+ ۱ + | + ۲ + | + ۳ + | + ۴ +
+

روبی در ۲۰ دقیقه

+ +--- + +Now let’s create a greeter object and use it: + +{% highlight irb %} +irb(main):035:0> greeter = Greeter.new("Pat") +=> # +irb(main):036:0> greeter.say_hi +Hi Pat! +=> nil +irb(main):037:0> greeter.say_bye +Bye Pat, come back soon. +=> nil +{% endhighlight %} + +Once the `greeter` object is created, it remembers that the name is Pat. Hmm, +what if we want to get at the name directly? + +{% highlight irb %} +irb(main):038:0> greeter.@name +SyntaxError: (irb):38: syntax error, unexpected tIVAR, expecting '(' +{% endhighlight %} + +Nope, can’t do it. + +## Under the Object’s Skin + +Instance variables are hidden away inside the object. They’re not +terribly hidden, you see them whenever you inspect the object, and there +are other ways of accessing them, but Ruby uses the good object-oriented +approach of keeping data sort-of hidden away. + +So what methods do exist for Greeter objects? + +{% highlight irb %} +irb(main):039:0> Greeter.instance_methods +=> [:say_hi, :say_bye, :instance_of?, :public_send, + :instance_variable_get, :instance_variable_set, + :instance_variable_defined?, :remove_instance_variable, + :private_methods, :kind_of?, :instance_variables, :tap, + :is_a?, :extend, :define_singleton_method, :to_enum, + :enum_for, :<=>, :===, :=~, :!~, :eql?, :respond_to?, + :freeze, :inspect, :display, :send, :object_id, :to_s, + :method, :public_method, :singleton_method, :nil?, :hash, + :class, :singleton_class, :clone, :dup, :itself, :taint, + :tainted?, :untaint, :untrust, :trust, :untrusted?, :methods, + :protected_methods, :frozen?, :public_methods, :singleton_methods, + :!, :==, :!=, :__send__, :equal?, :instance_eval, :instance_exec, :__id__] +{% endhighlight %} + +Whoa. That’s a lot of methods. We only defined two methods. What’s going +on here? Well this is **all** of the methods for Greeter objects, a +complete list, including ones defined by ancestor classes. If we want to +just list methods defined for Greeter we can tell it to not include +ancestors by passing it the parameter `false`, meaning we don’t want +methods defined by ancestors. + +{% highlight irb %} +irb(main):040:0> Greeter.instance_methods(false) +=> [:say_hi, :say_bye] +{% endhighlight %} + +Ah, that’s more like it. So let’s see which methods our greeter object +responds to: + +{% highlight irb %} +irb(main):041:0> greeter.respond_to?("name") +=> false +irb(main):042:0> greeter.respond_to?("say_hi") +=> true +irb(main):043:0> greeter.respond_to?("to_s") +=> true +{% endhighlight %} + +So, it knows `say_hi`, and `to_s` (meaning convert something to a +string, a method that’s defined by default for every object), but it +doesn’t know `name`. + +## Altering Classes—It’s Never Too Late + +But what if you want to be able to view or change the name? Ruby +provides an easy way of providing access to an object’s variables. + +{% highlight irb %} +irb(main):044:0> class Greeter +irb(main):045:1> attr_accessor :name +irb(main):046:1> end +=> nil +{% endhighlight %} + +In Ruby, you can open a class up again and modify it. The changes will +be present in any new objects you create and even available in existing +objects of that class. So, let’s create a new object and play with its +`@name` property. + +{% highlight irb %} +irb(main):047:0> greeter = Greeter.new("Andy") +=> # +irb(main):048:0> greeter.respond_to?("name") +=> true +irb(main):049:0> greeter.respond_to?("name=") +=> true +irb(main):050:0> greeter.say_hi +Hi Andy! +=> nil +irb(main):051:0> greeter.name="Betty" +=> "Betty" +irb(main):052:0> greeter +=> # +irb(main):053:0> greeter.name +=> "Betty" +irb(main):054:0> greeter.say_hi +Hi Betty! +=> nil +{% endhighlight %} + +Using `attr_accessor` defined two new methods for us, `name` to get the +value, and `name=` to set it. + +## Greeting Anything and Everything, MegaGreeter Neglects None! + +This greeter isn’t all that interesting though, it can only deal with +one person at a time. What if we had some kind of MegaGreeter that could +either greet the world, one person, or a whole list of people? + +Let’s write this one in a file instead of directly in the interactive +Ruby interpreter IRB. + +To quit IRB, type “quit”, “exit” or just hit Control-D. + +{% highlight ruby %} +#!/usr/bin/env ruby + +class MegaGreeter + attr_accessor :names + + # Create the object + def initialize(names = "World") + @names = names + end + + # Say hi to everybody + def say_hi + if @names.nil? + puts "..." + elsif @names.respond_to?("each") + # @names is a list of some kind, iterate! + @names.each do |name| + puts "Hello #{name}!" + end + else + puts "Hello #{@names}!" + end + end + + # Say bye to everybody + def say_bye + if @names.nil? + puts "..." + elsif @names.respond_to?("join") + # Join the list elements with commas + puts "Goodbye #{@names.join(", ")}. Come back soon!" + else + puts "Goodbye #{@names}. Come back soon!" + end + end +end + + +if __FILE__ == $0 + mg = MegaGreeter.new + mg.say_hi + mg.say_bye + + # Change name to be "Zeke" + mg.names = "Zeke" + mg.say_hi + mg.say_bye + + # Change the name to an array of names + mg.names = ["Albert", "Brenda", "Charles", + "Dave", "Engelbert"] + mg.say_hi + mg.say_bye + + # Change to nil + mg.names = nil + mg.say_hi + mg.say_bye +end +{% endhighlight %} + +Save this file as “ri20min.rb”, and run it as “ruby ri20min.rb”. The +output should be: + + Hello World! + Goodbye World. Come back soon! + Hello Zeke! + Goodbye Zeke. Come back soon! + Hello Albert! + Hello Brenda! + Hello Charles! + Hello Dave! + Hello Engelbert! + Goodbye Albert, Brenda, Charles, Dave, Engelbert. Come + back soon! + ... + ... +{: .code} + +There are a lot of new things thrown into this final example that we +[can take a deeper look at.](../4/) diff --git a/fa/documentation/quickstart/4/index.md b/fa/documentation/quickstart/4/index.md new file mode 100644 index 0000000000..a40b976ee8 --- /dev/null +++ b/fa/documentation/quickstart/4/index.md @@ -0,0 +1,156 @@ +--- +layout: page +title: "روبی در ۲۰ دقیقه" +lang: fa + +header: | +
+ ۱ + | + ۲ + | + ۳ + | + ۴ +
+

روبی در ۲۰ دقیقه

+ +--- + +So, looking deeper at our new program, notice the initial lines, which +begin with a hash mark (#). In Ruby, anything on a line after a hash +mark is a comment and is ignored by the interpreter. The first line of +the file is a special case, and under a Unix-like operating system tells +the shell how to run the file. The rest of the comments are there just +for clarity. + +Our `say_hi` method has become a bit trickier: + +{% highlight ruby %} +# Say hi to everybody +def say_hi + if @names.nil? + puts "..." + elsif @names.respond_to?("each") + # @names is a list of some kind, iterate! + @names.each do |name| + puts "Hello #{name}!" + end + else + puts "Hello #{@names}!" + end +end +{% endhighlight %} + +It now looks at the `@names` instance variable to make decisions. If +it’s nil, it just prints out three dots. No point greeting nobody, +right? + +## Cycling and Looping—a.k.a. Iteration + +If the `@names` object responds to `each`, it is something that you can +iterate over, so iterate over it and greet each person in turn. Finally, +if `@names` is anything else, just let it get turned into a string +automatically and do the default greeting. + +Let’s look at that iterator in more depth: + +{% highlight ruby %} +@names.each do |name| + puts "Hello #{name}!" +end +{% endhighlight %} + +`each` is a method that accepts a block of code then runs that block of +code for every element in a list, and the bit between `do` and `end` is +just such a block. A block is like an anonymous function or `lambda`. +The variable between pipe characters is the parameter for this block. + +What happens here is that for every entry in a list, `name` is bound to +that list element, and then the expression `puts "Hello #{name}!"` is +run with that name. + +Most other programming languages handle going over a list using the +`for` loop, which in C looks something like: + +{% highlight c %} +for (i=0; i