| BUNDLE-CACHE(1) | General Commands Manual | BUNDLE-CACHE(1) |
نام (NAME)
bundle-cache - بستهبندی فایلهای .gem مورد نیاز درون برنامه شما
خلاصه دستور (SYNOPSIS)
bundle cache [OPTIONS]
نامهای مستعار: package، pack
توضیحات (DESCRIPTION)
تمام فایلهای .gem مورد نیاز برای اجرای برنامه را در دایرکتوری vendor/cache کپی میکند. در آینده، هنگام اجرای bundle install(1) bundle-install.1.html، جمهای موجود در حافظه موقت (کَش) نسبت به جمهای موجود در rubygems.org در اولویت قرار خواهند گرفت.
گزینهها (OPTIONS)
- --all-platforms
- شامل کردن جمها برای تمام پلتفرمهای موجود در lockfile، نه فقط پلتفرم فعلی.
- --cache-path=CACHE-PATH
- مشخص کردن مسیری متفاوت برای کَش بهجای مسیر پیشفرض (vendor/cache).
- --gemfile=GEMFILE
- استفاده از gemfile مشخصشده بهجای Gemfile.
- --no-install
- جمها را نصب نکن، فقط کَش را بهروزرسانی کن.
- --quiet
- فقط هشدارها و خطاها را خروجی بده.
جمهای GIT و PATH (GIT AND PATH GEMS)
دستور bundle cache میتواند علاوه بر فایلهای .gem، وابستگیهای :git و :path را نیز بستهبندی کند. این قابلیت را میتوان با تنظیم cache_all روی مقدار false غیرفعال کرد.
پشتیبانی از چند پلتفرم (SUPPORT FOR MULTIPLE PLATFORMS)
هنگام استفاده از جمهایی که بستههای متفاوتی برای پلتفرمهای گوناگون دارند، Bundler از کَش کردن جمها برای سایر پلتفرمهایی که Gemfile برای آنها حل شده است (یعنی در lockfile حضور دارند) در vendor/cache پشتیبانی میکند. این ویژگی باید از طریق گزینه --all-platforms فعال شود. این تنظیم در پیکربندی محلی bundler شما ذخیره خواهد شد.
دریافت از راه دور (REMOTE FETCHING)
بهطور پیشفرض، اگر پس از اجرای bundle cache(1) bundle-cache.1.html دستور bundle install(1) bundle-install.1.html را اجرا کنید، bundler همچنان به rubygems.org متصل میشود تا بررسی کند آیا نسخه ویژهای برای پلتفرم شما برای هر یک از جمهای درون vendor/cache وجود دارد یا خیر.
برای نمونه، این Gemfile(5) را در نظر بگیرید:
-
source "https://rubygems.org" gem "nokogiri"
اگر bundle cache را در C Ruby اجرا کنید، bundler نسخه nokogiri مخصوص پلتفرم "ruby" را دریافت خواهد کرد. اگر برنامه را روی JRuby مستقر کرده و bundle install را اجرا کنید، bundler مجبور است بررسی کند آیا نسخهای از nokogiri برای پلتفرم "java" وجود دارد یا خیر.
اگرچه جم nokogiri برای پلتفرم Ruby از نظر فنی روی JRuby قابل قبول است، اما دارای یک افزونه C است که روی JRuby اجرا نمیشود. در نتیجه، bundler بهطور پیشفرض همچنان به rubygems.org متصل خواهد شد تا بررسی کند آیا نسخه اختصاصیتری از یکی از جمهای شما برای پلتفرم شما وجود دارد یا خیر.
این مشکل همچنین تنها به پلتفرم "java" محدود نمیشود. مشکل مشابه (و رایجی) ممکن است هنگام توسعه در Windows و استقرار روی Linux، یا حتی هنگام توسعه در OSX و استقرار روی Linux رخ دهد.
اگر مطمئن هستید که جمهای بستهبندیشده در vendor/cache برای پلتفرمی که روی آن هستید مناسب هستند، میتوانید bundle install --local را اجرا کنید تا از بررسی برای جمهای مناسبتر صرفنظر کرده و از موارد موجود در vendor/cache استفاده کند.
یک راه برای اطمینان از اینکه نسخههای متناسب با پلتفرم صحیح را برای تمام جمهای خود دارید، این است که bundle cache را روی ماشینی کاملاً یکسان اجرا کرده و جمها را تحویل مخزن (check in) دهید. برای نمونه، میتوانید در طول فرایند staging، دستور bundle cache را روی یک ماشین staging یکسان اجرا کنید و پیش از استقرار در محیط عملیاتی (production)، محتویات vendor/cache را ثبت کنید.
بهطور پیشفرض، bundle cache(1) bundle-cache.1.html جمها را واکشی کرده و آنها را در مکان پیشفرض نیز نصب میکند. برای بستهبندی وابستگیها در vendor/cache بدون نصب آنها در محل نصب محلی، میتوانید bundle cache --no-install را اجرا کنید.
تاریخچه (HISTORY)
در Bundler 2.1، دستور cache قابلیتهای package را در خود جای داد و اکنون package و pack نامهای مستعار cache هستند.
| September 2025 |