BUNDLE-CACHE(1) General Commands Manual BUNDLE-CACHE(1)

bundle-cache - بسته‌بندی فایل‌های .gem مورد نیاز درون برنامه شما

bundle cache [OPTIONS]

نام‌های مستعار: package، pack

تمام فایل‌های .gem مورد نیاز برای اجرای برنامه را در دایرکتوری vendor/cache کپی می‌کند. در آینده، هنگام اجرای bundle install(1) bundle-install.1.html، جم‌های موجود در حافظه موقت (کَش) نسبت به جم‌های موجود در rubygems.org در اولویت قرار خواهند گرفت.

شامل کردن جم‌ها برای تمام پلتفرم‌های موجود در lockfile، نه فقط پلتفرم فعلی.
مشخص کردن مسیری متفاوت برای کَش به‌جای مسیر پیش‌فرض (vendor/cache).
استفاده از gemfile مشخص‌شده به‌جای Gemfile.
جم‌ها را نصب نکن، فقط کَش را به‌روزرسانی کن.
فقط هشدارها و خطاها را خروجی بده.

دستور bundle cache می‌تواند علاوه بر فایل‌های .gem، وابستگی‌های :git و :path را نیز بسته‌بندی کند. این قابلیت را می‌توان با تنظیم cache_all روی مقدار false غیرفعال کرد.

هنگام استفاده از جم‌هایی که بسته‌های متفاوتی برای پلتفرم‌های گوناگون دارند، Bundler از کَش کردن جم‌ها برای سایر پلتفرم‌هایی که Gemfile برای آن‌ها حل شده است (یعنی در lockfile حضور دارند) در vendor/cache پشتیبانی می‌کند. این ویژگی باید از طریق گزینه --all-platforms فعال شود. این تنظیم در پیکربندی محلی bundler شما ذخیره خواهد شد.

به‌طور پیش‌فرض، اگر پس از اجرای 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 را اجرا کنید.

در Bundler 2.1، دستور cache قابلیت‌های package را در خود جای داد و اکنون package و pack نام‌های مستعار cache هستند.

September 2025