上传到生产时总是 运行 rake 任务
Always run rake task when uploading to production
我熟悉 Rails 但这是我第一次上传到生产环境。我能够成功地将我的应用程序上传到 AWS 并进行部署。但是,每次我这样做时,我都必须通过 ssh 进入我的服务器并 运行 必要的 rake 任务来清理我的模型并全面准备我的网站。是否有像 production.rb 这样的文件,您可以在其中编写一个脚本,以便在每次上传产品时成为 运行。例如 运行 所有测试和 rake 测试?有人有一个简单的脚本示例吗?这是我的 rake 文件的例子。
注意:我正在使用 AWS Beanstalk,非常容易部署,只是想 运行 一些 post 生产就绪脚本。
这是我想要 运行 命令 post 部署的 rake 文件。
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: "aj@psychowarfare.com")
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
对于post部署,您可以尝试以下方式。
在.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
这个配置的作用是:
创建“post”目录,如果它不存在(它不会被
默认)——忽略任何错误(例如如果目录已经
存在)
将具有适当权限的shell脚本部署到正确的目录
有关详细信息,请参阅以下参考资料:Blog-Article &
我熟悉 Rails 但这是我第一次上传到生产环境。我能够成功地将我的应用程序上传到 AWS 并进行部署。但是,每次我这样做时,我都必须通过 ssh 进入我的服务器并 运行 必要的 rake 任务来清理我的模型并全面准备我的网站。是否有像 production.rb 这样的文件,您可以在其中编写一个脚本,以便在每次上传产品时成为 运行。例如 运行 所有测试和 rake 测试?有人有一个简单的脚本示例吗?这是我的 rake 文件的例子。
注意:我正在使用 AWS Beanstalk,非常容易部署,只是想 运行 一些 post 生产就绪脚本。
这是我想要 运行 命令 post 部署的 rake 文件。
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: "aj@psychowarfare.com")
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
对于post部署,您可以尝试以下方式。
在.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
这个配置的作用是:
创建“post”目录,如果它不存在(它不会被 默认)——忽略任何错误(例如如果目录已经
存在)将具有适当权限的shell脚本部署到正确的目录
有关详细信息,请参阅以下参考资料:Blog-Article &