0

Ich bin mit Rails vertraut, aber dies ist das erste Mal, das ich in die Produktion hochlade. Ich kann meine App erfolgreich in AWS hochladen und bereitstellen. Allerdings muss ich jedes Mal, wenn ich das tue, auf meinen Server zugreifen und die notwendigen Rake-Aufgaben ausführen, um meine Modelle zu bereinigen und meine Website vollständig vorzubereiten. Gibt es eine Datei wie production.rb, wo Sie ein Skript schreiben können, das bei jedem Produktions-Upload ausgeführt wird. Führen Sie beispielsweise alle Tests und Rake-Tests durch? Gibt es ein einfaches Beispiel für ein Skript jemand. Dies ist das Beispiel meiner Rake-Datei.Beim Hochladen in die Produktion immer Rake-Task ausführen

Hinweis: Ich verwende AWS Beanstalk, super einfach zu implementieren, möchte nur einige Postproduktion bereit Skripts ausführen.

Dies ist die Rake-Datei, die ich nach der Bereitstellung Befehle ausführen möchte.

require "#{Rails.root}/app/helpers/application_helper" 
include ApplicationHelper 

namespace :db do 
    desc "Generate a new blog post markdown" 
    task new_article: :environment do 
    cp 'lib/assets/articles/template.md', "lib/assets/articles/NEW_ARTICLE#{Time.now.strftime("%s")}.md" 
    puts 'new article created!' 
    end 

    task populate: :environment do 
    Article.destroy_all 

    if User.count == 0 
     User.create!(name: "AJ", email: "[email protected]") 
    end 

    puts Dir.pwd 
    a = File.join("lib", "assets", "articles", "*.md") 
    Dir.glob(a).reject { |name| /.*(template|NEW_ARTICLE).*/ =~ name }.each do |file| 
     File.open(file, "r") do |f| 
     contents = f.read 
     mkdown = Metadown.render(contents) 
     md = mkdown.metadata 

     unrendered_content = contents.sub(/^---(\n|.)*---/, '') 
     #puts unrendered_content 


     article = Article.create!(title: md["title"], 
         content: markdown(unrendered_content), 
         header_image: md["header_image"], 
         published: md["published"], 
         useful_links: md["useful_links"], 
         people_mentioned: md["people_mentioned"], 
         written_at_date: md["written_at_date"], 
         timestamp: md["timestamp"], 
         embedded_link: md["embedded_link"], 
         user: User.first) 


     article.add_tag(md["tags"]) 
     puts article.useful_links 
     puts article.people_mentioned 
     puts article.header_image 
     puts article.tags 

     end 
    end 

    puts "Article Count: #{Article.count}" 
    end 



end 

Antwort

1

Nach der Bereitstellung können Sie den folgenden Weg versuchen.

Erstellen Sie eine Datei in .ebextensions/01_build.config

commands: 
    create_post_dir:   
     command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post" 
     ignoreErrors: true 
files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_build_app.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     cd /var/app/current/app/ 
     Your-Post-Deploy-Command1 
     Your-Post-Deploy-Command2 
     Your-Post-Deploy-Command3 

Was diese Config tut, ist:

  • der „Post“ Verzeichnis erstellen, wenn es nicht bereits vorhanden ist (es wird nicht von Standard) - ignorieren Sie alle Fehler (z. B. wenn das Verzeichnis bereits
    existiert)

  • den Shell-Skript mit den entsprechenden Berechtigungen in das richtige Verzeichnis bereitstellen

Für weitere Informationen sehen Sie sich die folgenden Hinweise: Blog-Article & Stackoverflow-Question

Verwandte Themen