مشکل در نصب gem ها با IP ایران

سلام. یه مشکلی که من مدام درگیرش هستم و فکر می کنم که مشکل شما هم باشه اینه که gem ها خیلی سخت دانلود و در نتیجه نصب میشن. کاری که من میکنم اینه که وی پی ان می زنم و بعد نصبشون می کنم. همیشه هم تو نصب nokogiri گیر می کنه. نظر شما چیه. شما چه چالش هایی تو این زمینه دارید؟

سلام,
من کاربر ویندوز نیستم و جوابم نمیتونه خیلی علمی باشه. حتی نمیدونم که شما از ویندوز استفاده می کنید یا نه.
به نظر میاد این مشکل بیش از این که به ip ایران مربوط بشه به SSL config در ویندوز ربط داشته باشه, در ضمن بعضی از gem ها برای نصب, کمپایل و عملیاتی شدن یک سری پیش نیاز هم دارن.
قول نمیدم اما اگر بتونم یک پست کلی در این مورد میزارم, بخصوص برای دوستان ویندوزی که بیشتر از این گونه مشکلات خواهند داشت.
لطفا پیام خطا رو ضمیمه کنید و پیشنهاد میشه حتما این gem ها رو برای تست هم که شده توی Linux, Mac و یا BSD نصب کنید (تو یکیش کافیه!). برای شروع خوبه. هر چند این روش خیلی هم هوشمندانه نیست. اگر توی اکوسیستم لینوکس, BSD یا مک بازم ارور داشتین اونم پست کنید. حتما سعی می کنم کمک کنم.
با سپاس

اگر بازم جواب نگرفتید, nokogiri رو به صورت زیر دانلود و کمپایل کنید.
git باید نصب باشه. میتونید مستقیم از آدرس زیر در مرورگر هم دانلود کنید. من git رو ترجیح میدم.

git clone https://github.com/larskanis/nokogiri
cd nokogiri
bundle
rake gem:windows
1 پسندیده

@toomaj عزیز کاری که من کردم این بود که از طریق vpn دانلودش کردم و نصبش کردم. و اروری که میداد همون ارور ssl بود. ولی چیزی رو که متوجه نمی شم اینه که ssl کلن چه ارتباطی میتونه با تغییر IP داشته باشه. البته اینو بگم که من کاربر لینوکس هستم.

1 پسندیده

@ahmad.pn جان بازم اگر پیام خطا رو داشتیم بهتر بود.
یه حدسی که میشه زد اینه که, سروری که gem رو میزبانی می کنه به هر دلیلی پشت فیلتر باشه, یا ISP شما جلوی ارتباط با protocol درخواستی به اون سرور بخصوص رو بگیره.
بازم فقط یه حدسه اگر بگم شاید منبع gem شما به ایران سرویس نده که در همه این موارد میتونید gem رو از جای دیگه ای دریافت کنید. مثل github که قطعا بهترین گزینه ست.
حتما شما بهتر میدونید که برای این کار به شکل زیر عمل میشه:

gem 'gem_name', :git => 'git://github.com/repo_name/gem.git'
$ bundle install

مثلا برای نصب devise که gem بسیار خوبیه میشه:

gem 'devise', git=> 'git://github.com/plataformatec/devise.git'

$ bundle install

حتی میشه برنچ جم رو برای نصب از ریپوزیتوری معین کرد:

branch=> 'master'
1 پسندیده

ERROR: While executing gem … (Gem::RemoteFetcher::FetchError)
Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://api.rubygems.org/quick/Marshal.4.8/will_paginate-3.0.7.gemspec.rz)

اگر از gem استفاده می کنی این کار رو بکن:

gem install harchi --source http://rubygems.org

اگر از bundler استفاده می کنی سورس رو به http تغییر بده.
اما بهترین راه استفاده از فیلتر شکن هستش

2 پسندیده

@lxsameer من از همین روش استفاده میکنم. اون روشی هم که @toomaj کفت اونم حوبه. اما تو بروزر https رو باز میکنه.

روی بعضی از کانکشن‌ها ممکنه http://rubygems.org جواب نده می‌تونید از http://production.cf.rubygems.org استفاده کنید

1 پسندیده

به هر حال حل کردن اینگونه مشکلات هم خودش کلی تجربه کار رو بالا می بره و میتونه خیلی آموزنده باشه.
هرکدوم از این روش میتونه برای عده ای از دوستان خوب باشه.

اگر برای تعریف gem ها از gemfile استفاده میکنید, پیشنهاد میشه خط زیرو در ابتدای gemfile قرار بدین.

source 'http://rubygems.org'

اگر https بود به http تغییر داده بشه :smile:

1 پسندیده

@toomaj اینم خوبه ولی معمولن جواب نمیده. به نظرم بهترین روش همون vpn یا گیت هاب هست.

@ahmad.pn خیلی هم خوب.
خیلی کنجاوم بدونم که توی ایران این مشکل با github هم همچنان پابرجاست یا نه.
بدونه استفاده از vpn

خوشبختانه فعلن بله :laughing:

1 پسندیده

ERROR: Could not find a valid gem ‘harchi’ (>= 0) in any repository

:pensive:

2 پسندیده

:laughing:

1 پسندیده

آقا جای هرچی اسم جمت رو بزار :confused:

اگه يكي يه gem به اسم harchi بنويسه مشكل جماعتي حل ميشه Lol

3 پسندیده

خود rubygems هم میگه از سورس

http://rubygems.org

استفاده کنیم.
به این صورت اول سورس قبلی رو حذف میکنیم. بعد سورس جدید رو اضافه میکنیم:

 gem sources -r https://rubygems.org/

 gem sources -a http://rubygems.org/

حالا gem مورد نظرتون رو نصب میکنین (مثلا من bundler رو نصب میکنم):

gem install bundler
1 پسندیده

@Rezam کاملا درسته.
اما جمی که @lxsameer معرفی کردند(Gemstash) هم ممکنه خیلی به کار بیاد, بخصوص همون طوری که توی repo توضیح داده شده, اگر لازم باشه که جم ها رو مرتب روی تعدادی کامپیوتر که به سرور اصلی شما وصل هستند با استفاده از bundler به كار بگيريد.
شاید سرور اصلی رو نخواین به اینترنت وصل کنید! یا اینکه مثلا نخواین جمی رو که خودتون نوشتین به شکل همه گانی منتشر کنید.
پس این جم هم در زیرمجموعه امنیت قرار می گیره و هم مدیریت (البته مدیریت و امنیت هر دو خیلی واژگان کلی هستند).