merged/lib/merged/engine.rb

75 lines
2.2 KiB
Ruby
Raw Normal View History

2022-12-10 17:38:24 +01:00
require "active_hash"
require "ruby2js"
require "ruby2js/es2015"
require "ruby2js/filter/functions"
require "ruby2js/haml"
require "ruby2js/filter/vue"
require "merged/shared_helper"
2022-12-10 17:38:24 +01:00
module Merged
class Engine < ::Rails::Engine
isolate_namespace Merged
2023-01-26 21:41:24 +01:00
config.merged = Merged
initializer "merged.assets.precompile" do |app|
2023-02-11 12:05:13 +01:00
app.config.assets.precompile += %w( merged/merged.css merged/merged.email.css
2023-01-10 20:06:11 +01:00
merged/home merged/merged_logo)
2022-11-29 11:07:10 +01:00
add_image_assets(app.config , "section_preview")
add_image_assets(app.config , "card_preview")
end
initializer "after_initialize" do |app|
ActiveSupport::Reloader.to_prepare do
end
end
2022-11-29 11:07:10 +01:00
private
def add_image_assets(config , sub_dir )
dir = Dir.new(Engine.root.join("app/assets/images/merged/" , sub_dir))
dir.children.each do |file|
kid = "merged/" + sub_dir + "/" + file
config.assets.precompile << kid
end
end
2023-01-29 17:13:49 +01:00
end
end
module ActionDispatch::Routing
class Mapper
# merged_routes will draw neccessary routes and possibly mount engine
# This includes:
# post /form for form processing
# get /news/:id for any news posts
# get /:id for any pages
# redirects from any renamed page
2023-01-29 17:13:49 +01:00
# root to /index unless options[:root] == false
# mount the engine (make editing possible) unless production
# or oprions[:production] == true (not recommended)
def merged_routes options = {}
Rails.application.routes.draw do
if options[:root]
root "merged/view#page" , id: 'index'
end
2023-01-27 18:08:57 +01:00
Merged::Page.all.each do |page|
next unless page.redirects
page.redirects.split.each do |old|
next if old == page.name
get "/#{old}" => redirect("/#{page.name}")
end
end
2023-01-29 17:13:49 +01:00
post "/form" , to: "merged/form#post" , as: :post_form
get "/news/:id" , to: "merged/view#page" , id: :id , as: :view_blog
get ":id" , to: "merged/view#page" , id: :id , as: :view_page
engine_path = options[:path] || "/merged"
2023-01-30 18:03:44 +01:00
if ! Rails.env.production? or options[:production].present?
2023-01-29 17:13:49 +01:00
mount Merged::Engine => engine_path
end
end
end
end
end