2016-04-26 13 views
5

Gibt es eine Möglichkeit, dass ich eine meiner Bash-Umgebungsvariablen (zB $FOO) in meiner Jekylls _config.yml Datei verwenden kann?Wie können wir Umgebungsvariablen in einer Jekyll-Konfigurationsdatei verwenden?

Ich habe versucht, mit:

foo = <%= ENV['FOO'] %> 

Aber es hat nicht funktioniert, wie der Ruby-Code nicht interpretiert wurde.

verwendet Versionen:

  • Rubin: 2.1.2
  • Jekyll: 2.5.3
+1

Sie könnten versuchen, eine 'rake' Aufgabe den Aufbau Ihrer' _config.yml' programmatisch zu bauen, wenn Sie etwas zu Ihrem Jekyll Website veröffentlichen. –

+0

Ich dachte daran, aber es ist keine ideale Lösung und ich bin neugierig zu wissen, ob meine Frage eine Antwort hat :) –

+1

Fair genug - deshalb habe ich kommentiert und habe nicht geantwortet;) –

Antwort

-3

Wenn Ihre Variablen bash-Umgebung wie dieser

erklärt
export ENV_ACCESS_TOKEN=xxxxx 
export ENV_SPACE_ID=yyyyyy 

Sie können Holen Sie es so in Ihrem

space: ENV_SPACE_ID # Required 
access_token: ENV_ACCESS_TOKEN # Required 
+0

Welche Version von Jekyll benutzt du? Ich kann dieses Verhalten nicht mit Jekyll reproduzieren 3.3.1. Der flüssige Temport gibt nur ENV_SPACE_ID aus. –

+0

Das funktioniert absolut nicht - zumindest aus der Box. – mgarciaisaia

+0

Diese Lösung funktioniert für Umgebungsvariablen im 'config.yml' Jekyll 3.3.1. Um env-Variablen in Ihren Vorlagen zu verwenden, sollten Sie eine andere Lösung verwenden. @DirtyHenry – elyrico

0

Die Antwort von @elryco ist nah, aber nicht ganz richtig, zumindest für meine Einrichtung. Es hat ein wenig Versuch und Irrtum gebraucht, aber das hat schließlich funktioniert.

Bash-Umgebung (zum Beispiel ~/.bash_profile):

export CONTENTFUL_ACCESS_TOKEN=foo 
export CONTENTFUL_SPACE_ID=bar 

In _config.yml Bezug sich als:

contentful: 
    spaces: 
    - example: 
     space:  ENV_CONTENTFUL_SPACE_ID 
     access_token: ENV_CONTENTFUL_ACCESS_TOKEN 

Dies ist das gleiche wie das, was in den Github documentation geschrieben.

+0

Nicht sicher, auf welche Variablen oder Versionen es beschränkt ist (Ich bin auf einem frischen jekyll/github-pages-Stack), aber das heißt, Titel: ENV_HOME' funktioniert nicht auf localhost. (und die Umgebungsvariable 'HOME' ist eindeutig festgelegt). –

+0

Der Code zum Auschecken der ENV_ gehört zum Plug-In jekyll-contentful-data-import. Es ist also nicht für jeden Jekyll-Nutzer verfügbar. –

0

Leider gibt es keine direkte Möglichkeit, in Flüssigkeitsmarken, zumindest offiziell, zuzugreifen.

Aber ich schrieb ein Wrapper-Skript, das Umgebungsvariablen liest, bevor Jekyll startet und fügt es an _config.yml Datei an und löscht die Variable post build.

echo "secret-variable: $PASSWORD" >> _config.yml 
    bundle exec jekyll build -d target 
    sed '$d' _config.yml      //this is to delete the last line 

Jetzt bin ich frei site.secret-variable überall in den flüssigen Tags zu verwenden.

Ich weiß, dass dies nicht der richtige Weg ist, es zu tun, aber so ist das Schreiben eines benutzerdefinierten Ruby-Skript.

1

Ich musste das vor kurzem selbst versuchen. Es stellt sich heraus, Sie können nicht Umgebungsvariablen direkt in eine Jekyll-Konfigurationsdatei, aber Sie können schreiben Sie eine rake Aufgabe, die Umgebungsvariablen nehmen und sie auf Ihre Konfiguration anwenden.

Hier ein Beispiel:

# Rakefile 

require 'jekyll' 

task default: %w[build] 

desc "Build the site" 
task :build do 
    config = Jekyll.configuration({ 
    url: ENV["SITE_URL"], 
    }) 
    site = Jekyll::Site.new(config) 
    Jekyll::Commands::Build.build(site, config) 
end 
Verwandte Themen