مشکل در اتصال System.get_env در elixir

درود خدمت دوستان . من یک مشکلی دارم تو اکثر مواردی که نیاز هست از کتابخانه استفاده کنم این مشکل دارم

به عنوان مثال

من این کتابخانه رو درست انجام دادم و مشکلی هم ندارم . حالا وقتی می خوام توکن و … رو اضافه کنم

ExTwitter.configure(
   consumer_key: System.get_env("TWITTER_CONSUMER_KEY"),
   consumer_secret: System.get_env("TWITTER_CONSUMER_SECRET"),
   access_token: System.get_env("TWITTER_ACCESS_TOKEN"),
   access_token_secret: System.get_env("TWITTER_ACCESS_SECRET")
)

این فکر کنم باید بیاد از فایل کانفیگ بخونه اطلاعات من که اینجوری وارد کردم

config :extwitter, :oauth, [
   consumer_key: "Mycode",
   consumer_secret: "Mycode",
   access_token: "Mycode",
   access_token_secret: "Mycode"
]

متاسفانه System.get_env از کانفیگم نمی تونه بخونه مجبور هستم داخل کدم بیام

ExTwitter.configure(:process, [consumer_key: ("mycode"),
		consumer_secret: ("mycode"),
		access_token: ("mycode"),
		access_token_secret: ("mycode")])

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

قبل از اجراى فينيكس توى ترمينال فرمان زيرو اجرا كن و مقدار توكن بره جاى token

export TWITTER_ACCESS_TOKEN="token"

به همين شكل بقيه variable ها ست بشن.
بعد توى همون ترمينال فينيكس رو اجرا كن، اگر درست بود يعنى احتمالا كانفيگ درست انجام نشده براى environment مورد نظر، به همين خاطر environment variable ها درست ست نميشن.

ياداور ميشم كه System.get_env قرار نيست چيزى رو از كانفيگ بخونه، اما شما environment variable ها رو در كانفيگ تعريف ميكنيد

1 پسندیده

شايد لينك هاى زير به كار بياد
http://blog.plataformatec.com.br/2016/05/how-to-config-environment-variables-with-elixir-and-exrm/

1 پسندیده

درود خدمت شما

ممنون از شما @toomaj الان من با چیزی که شما اشاره کردید مشکلم حل شد . فقط یکی دوتا سوال برام پیش اومده

۱. الان که من تو الکسیر هستم هنوز روی فونیکس نرفتم . می خواستم بپرسم روی فونیکس وقتی رفتم بهتر نیست توی دیتابیس تنظیم بشه ؟ هم مدیر بتونه ادیت کنه ؟

۲. این export که می کنیم در مسیر همون پروژه آیا برای تمام پروژه های من که روی سیستمم هست اعمال می شه یا فقط در اون مسیر می مونه ؟ چون فکر کنم در فایل profile_bash یا هم چنین چیزایی تو مسیر روت قرار می گیره درسته ؟

تشکر

پیوست

من الان تست کردم دیدم که در iex اپ های دیگه ای که درست کردم هم مثلا

System.get_env("TWITTER_CONSUMER_KEY")

کار می کنه و بر می گردونه موردی که مدنظره . آیا امکان نداره فقط برای یک اپ این کد برگرده . چون ممکنه روی سرور چندین اپ وجود داشته باشه و همینطور دسترسی هم برای یک سری کاربر روی این کد ها محدود باشه ( در روی سرور )

سلام، جواب كوتاه اينه كه ميتونيد يك فايل كانفيگ مثل yml داشته باشيد كه env vars مورد نياز رو توش به صورت key: value قرار بدين، و اسكريپتى كه app شما رو اجرا ميكنه با استفاده از اون فايل env vars رو export كنه، لازم نيست توى روت سيستم عامل اين كار انجام بشه.
از ديتابيس براى اينكار استفاده نكنيد.
بعدا بيشتر توضيح ميدم
كلا الگوى مشخصى براى اين كار وجود داره

1 پسندیده

ممنون می شم وقت کردید بیشتر در این رابطه صحبت کنید با تشکر

1 پسندیده