solidify 0.0.1.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +40 -0
  5. data/.travis.yml +10 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/Gemfile +3 -0
  8. data/Guardfile +51 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +75 -0
  11. data/Rakefile +42 -0
  12. data/app/controllers/concerns/solidify/liquid.rb +26 -0
  13. data/app/controllers/solidify/addresses_controller.rb +15 -0
  14. data/app/controllers/solidify/carts_controller.rb +15 -0
  15. data/app/controllers/solidify/collections_controller.rb +26 -0
  16. data/app/controllers/solidify/customers_controller.rb +16 -0
  17. data/app/controllers/solidify/home_controller.rb +15 -0
  18. data/app/controllers/solidify/liquid_controller.rb +25 -0
  19. data/app/controllers/solidify/orders_controller.rb +19 -0
  20. data/app/controllers/solidify/pages_controller.rb +22 -0
  21. data/app/controllers/solidify/products_controller.rb +34 -0
  22. data/app/controllers/solidify/registrations_controller.rb +25 -0
  23. data/app/controllers/solidify/responders/solidify/liquid_responder.rb +29 -0
  24. data/app/controllers/solidify/search_controller.rb +41 -0
  25. data/app/controllers/solidify/sessions_controller.rb +15 -0
  26. data/app/drops/rails_settings/scoped_settings_drop.rb +11 -0
  27. data/app/drops/solidify/errors_drop.rb +14 -0
  28. data/app/drops/solidify/link_drop.rb +15 -0
  29. data/app/drops/solidify/link_list_drop.rb +7 -0
  30. data/app/drops/solidify/nil_drop.rb +7 -0
  31. data/app/drops/solidify/page_drop.rb +7 -0
  32. data/app/drops/solidify/search_drop.rb +7 -0
  33. data/app/drops/spree/address_drop.rb +28 -0
  34. data/app/drops/spree/image_drop.rb +32 -0
  35. data/app/drops/spree/line_item_drop.rb +98 -0
  36. data/app/drops/spree/option_type_drop.rb +4 -0
  37. data/app/drops/spree/order_drop.rb +64 -0
  38. data/app/drops/spree/product_drop.rb +97 -0
  39. data/app/drops/spree/taxon_drop.rb +53 -0
  40. data/app/drops/spree/user_drop.rb +54 -0
  41. data/app/drops/spree/variant_drop.rb +111 -0
  42. data/app/fields/spree/address_fields.rb +18 -0
  43. data/app/fields/spree/image_fields.rb +12 -0
  44. data/app/fields/spree/line_item_fields.rb +21 -0
  45. data/app/fields/spree/order_fields.rb +22 -0
  46. data/app/fields/spree/product_fields.rb +22 -0
  47. data/app/fields/spree/taxon_fields.rb +18 -0
  48. data/app/fields/spree/user_fields.rb +14 -0
  49. data/app/fields/spree/variant_fields.rb +19 -0
  50. data/app/filters/solidify/additional_filters.rb +22 -0
  51. data/app/filters/solidify/html_filters.rb +16 -0
  52. data/app/filters/solidify/money_filters.rb +39 -0
  53. data/app/filters/solidify/string_filters.rb +47 -0
  54. data/app/filters/solidify/url_filters.rb +59 -0
  55. data/app/helpers/solidify/liquid_helper.rb +111 -0
  56. data/app/helpers/solidify/shop_helper.rb +7 -0
  57. data/app/models/concerns/solidify/address.rb +15 -0
  58. data/app/models/concerns/solidify/full_name.rb +11 -0
  59. data/app/models/concerns/solidify/handle.rb +25 -0
  60. data/app/models/concerns/solidify/inventory_policy.rb +7 -0
  61. data/app/models/concerns/solidify/validation_cancel.rb +33 -0
  62. data/app/models/concerns/spree/order_state.rb +19 -0
  63. data/app/models/solidify/asset.rb +12 -0
  64. data/app/models/solidify/link.rb +10 -0
  65. data/app/models/solidify/link_list.rb +7 -0
  66. data/app/models/solidify/page.rb +5 -0
  67. data/app/models/solidify/setting.rb +8 -0
  68. data/app/models/solidify/theme.rb +19 -0
  69. data/app/models/spree/address_decorator.rb +13 -0
  70. data/app/models/spree/image_decorator.rb +7 -0
  71. data/app/models/spree/line_item_decorator.rb +7 -0
  72. data/app/models/spree/order_decorator.rb +10 -0
  73. data/app/models/spree/product_decorator.rb +8 -0
  74. data/app/models/spree/taxon_decorator.rb +20 -0
  75. data/app/models/spree/user_decorator.rb +9 -0
  76. data/app/models/spree/variant_decorator.rb +11 -0
  77. data/app/poro/solidify/search.rb +14 -0
  78. data/app/services/solidify/app_specific_string_io.rb +15 -0
  79. data/app/services/solidify/asset_compiler.rb +11 -0
  80. data/app/services/solidify/asset_postprocessor.rb +53 -0
  81. data/app/services/solidify/collections_all_builder.rb +12 -0
  82. data/app/services/solidify/link_list_seeder.rb +26 -0
  83. data/app/services/solidify/liquid_asset_compiler.rb +19 -0
  84. data/app/services/solidify/scss_asset_compiler.rb +15 -0
  85. data/app/services/solidify/shop_settings_seeder.rb +26 -0
  86. data/app/services/solidify/theme_mechanic.rb +30 -0
  87. data/app/uploaders/solidify/asset_uploader.rb +10 -0
  88. data/app/views/solidify/global/content_for_header.html.erb +0 -0
  89. data/app/views/solidify/themes/skeleton-theme/README.md +54 -0
  90. data/app/views/solidify/themes/skeleton-theme/assets/arrow-down.svg.liquid +3 -0
  91. data/app/views/solidify/themes/skeleton-theme/assets/cart.svg.liquid +4 -0
  92. data/app/views/solidify/themes/skeleton-theme/assets/shop.js.liquid +75 -0
  93. data/app/views/solidify/themes/skeleton-theme/assets/shopify_common.js +14 -0
  94. data/app/views/solidify/themes/skeleton-theme/assets/style.scss.liquid +768 -0
  95. data/app/views/solidify/themes/skeleton-theme/config/settings.html +217 -0
  96. data/app/views/solidify/themes/skeleton-theme/config/settings_data.json +26 -0
  97. data/app/views/solidify/themes/skeleton-theme/layout/theme.liquid +181 -0
  98. data/app/views/solidify/themes/skeleton-theme/snippets/article-grid-item.liquid +73 -0
  99. data/app/views/solidify/themes/skeleton-theme/snippets/collection-grid-item.liquid +46 -0
  100. data/app/views/solidify/themes/skeleton-theme/snippets/collection-listing.liquid +46 -0
  101. data/app/views/solidify/themes/skeleton-theme/snippets/open-graph-tags.liquid +35 -0
  102. data/app/views/solidify/themes/skeleton-theme/snippets/product-grid-item.liquid +70 -0
  103. data/app/views/solidify/themes/skeleton-theme/snippets/site-nav.liquid +57 -0
  104. data/app/views/solidify/themes/skeleton-theme/snippets/social-links.liquid +42 -0
  105. data/app/views/solidify/themes/skeleton-theme/snippets/twitter-card.liquid +41 -0
  106. data/app/views/solidify/themes/skeleton-theme/templates/404.liquid +2 -0
  107. data/app/views/solidify/themes/skeleton-theme/templates/article.liquid +160 -0
  108. data/app/views/solidify/themes/skeleton-theme/templates/blog.grid.liquid +30 -0
  109. data/app/views/solidify/themes/skeleton-theme/templates/blog.liquid +92 -0
  110. data/app/views/solidify/themes/skeleton-theme/templates/cart.liquid +123 -0
  111. data/app/views/solidify/themes/skeleton-theme/templates/collection.liquid +102 -0
  112. data/app/views/solidify/themes/skeleton-theme/templates/customers/account.liquid +57 -0
  113. data/app/views/solidify/themes/skeleton-theme/templates/customers/activate_account.liquid +26 -0
  114. data/app/views/solidify/themes/skeleton-theme/templates/customers/addresses.liquid +173 -0
  115. data/app/views/solidify/themes/skeleton-theme/templates/customers/login.liquid +90 -0
  116. data/app/views/solidify/themes/skeleton-theme/templates/customers/order.liquid +103 -0
  117. data/app/views/solidify/themes/skeleton-theme/templates/customers/register.liquid +32 -0
  118. data/app/views/solidify/themes/skeleton-theme/templates/customers/reset_password.liquid +27 -0
  119. data/app/views/solidify/themes/skeleton-theme/templates/index.liquid +39 -0
  120. data/app/views/solidify/themes/skeleton-theme/templates/list-collections.liquid +19 -0
  121. data/app/views/solidify/themes/skeleton-theme/templates/page.liquid +16 -0
  122. data/app/views/solidify/themes/skeleton-theme/templates/product.liquid +202 -0
  123. data/app/views/solidify/themes/skeleton-theme/templates/search.liquid +72 -0
  124. data/bin/rails +12 -0
  125. data/config/app.yml +0 -0
  126. data/config/initializers/carrierwave.rb +25 -0
  127. data/config/initializers/devise.rb +286 -0
  128. data/config/initializers/form_tag.rb +43 -0
  129. data/config/initializers/liquid.rb +213 -0
  130. data/config/initializers/sass.rb +15 -0
  131. data/config/initializers/spree.rb +7 -0
  132. data/config/initializers/theme_settings.rb +29 -0
  133. data/config/routes.rb +52 -0
  134. data/config/spring.rb +2 -0
  135. data/db/migrate/20170223064316_create_solidify_assets.solidify.rb +14 -0
  136. data/db/migrate/20170223064317_create_solidify_themes.solidify.rb +10 -0
  137. data/db/migrate/20170223064318_create_solidify_link_lists.solidify.rb +12 -0
  138. data/db/migrate/20170223064319_create_solidify_links.solidify.rb +13 -0
  139. data/db/migrate/20170223064320_create_solidify_settings.solidify.rb +22 -0
  140. data/db/migrate/20170223064321_create_solidify_pages.solidify.rb +16 -0
  141. data/db/migrate/20170223064322_add_attributes_to_spree_users.solidify.rb +7 -0
  142. data/db/migrate/20170223064323_add_handle_to_spree_taxons.solidify.rb +7 -0
  143. data/db/migrate/20170228115149_add_state_and_country_fields_to_spree_addresses.solidify.rb +7 -0
  144. data/lib/generators/solidify/install/install_generator.rb +23 -0
  145. data/lib/solidify.rb +11 -0
  146. data/lib/solidify/configuration.rb +21 -0
  147. data/lib/solidify/engine.rb +24 -0
  148. data/lib/solidify/testing_support/factories.rb +5 -0
  149. data/lib/solidify/testing_support/factories/assets.rb +75 -0
  150. data/lib/solidify/testing_support/factories/solidify_pages.rb +10 -0
  151. data/lib/solidify/testing_support/factories/spree_addresses.rb +9 -0
  152. data/lib/solidify/testing_support/factories/spree_line_items.rb +10 -0
  153. data/lib/solidify/testing_support/factories/spree_orders.rb +9 -0
  154. data/lib/solidify/testing_support/factories/spree_products.rb +8 -0
  155. data/lib/solidify/testing_support/factories/spree_taxons.rb +7 -0
  156. data/lib/solidify/testing_support/factories/spree_variants.rb +7 -0
  157. data/lib/solidify/testing_support/factories/themes.rb +7 -0
  158. data/lib/solidify/version.rb +3 -0
  159. data/lib/tasks/download_theme.rake +18 -0
  160. data/lib/tasks/seed_default_theme.rake +8 -0
  161. data/lib/tasks/seed_everything.rake +12 -0
  162. data/lib/tasks/seed_link_list.rake +8 -0
  163. data/lib/tasks/seed_shop_settings.rake +8 -0
  164. data/solidify.gemspec +61 -0
  165. metadata +668 -0
@@ -0,0 +1,25 @@
1
+ module Solidify
2
+ module Handle
3
+ extend ActiveSupport::Concern
4
+ include ActionDispatch::Routing::PolymorphicRoutes
5
+ include Solidify::Engine.routes.url_helpers
6
+
7
+ included do
8
+ extend FriendlyId
9
+ friendly_id :name, use: %i(finders slugged)
10
+
11
+ def self.handle_to_records_array
12
+ all.each_with_object({}) do |record, hash|
13
+ hash[record.handle] = record
14
+ end
15
+ end
16
+
17
+ def url
18
+ polymorphic_path(self)
19
+ end
20
+
21
+ alias_attribute :handle, :slug
22
+ alias_attribute :title, :name
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ module Solidify
2
+ module InventoryPolicy
3
+ extend ActiveSupport::Concern
4
+ INVENTORY_POLICY_DENY = 'deny'.freeze
5
+ INVENTORY_POLICY_ALLOW = 'continue'.freeze
6
+ end
7
+ end
@@ -0,0 +1,33 @@
1
+ module Solidify
2
+ module ValidationCancel
3
+ def cancel_validates(*attributes)
4
+ klass = self
5
+ attributes.each do |attribute|
6
+ cancel_single_validates(attribute, klass)
7
+ cancel_array_validates(attribute)
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def cancel_single_validates(attribute, klass)
14
+ # validates :country_id, presence: true
15
+ ary = [attribute]
16
+ callbacks = _validate_callbacks.select do |callback|
17
+ callback.raw_filter.try(:attributes) == ary
18
+ end
19
+ callbacks.each do |callback|
20
+ ifs = callback.instance_variable_get(:@if)
21
+ ifs << proc { !is_a?(klass) }
22
+ end
23
+ end
24
+
25
+ def cancel_array_validates(attribute)
26
+ # validates :firstname, :address1, :city, :country_id, presence: true
27
+ callbacks = _validate_callbacks.select do |callback|
28
+ callback.raw_filter.try(:attributes).try(:include?, attribute)
29
+ end
30
+ callbacks.map { |cb| cb.raw_filter.attributes.delete(attribute) }
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ module Spree
2
+ module OrderState
3
+ extend ActiveSupport::Concern
4
+ # https://github.com/solidusio/solidus/blob/master/core/app/models/spree/order/checkout.rb
5
+ # checkout flow
6
+ CART = 'cart'.freeze
7
+ ADDRESS = 'address'.freeze
8
+ DELIVERY = 'delivery'.freeze
9
+ PAYMENT = 'payment'.freeze
10
+ CONFIRM = 'confirm'.freeze
11
+ COMPLETE = 'complete'.freeze
12
+
13
+ # other states
14
+ AWAITING_RETURN = 'awaiting_return'.freeze
15
+ CANCELED = 'canceled'.freeze
16
+ RESUMED = 'resumed'.freeze
17
+ RETURNED = 'returned'.freeze
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ module Solidify
2
+ class Asset < ActiveRecord::Base
3
+ mount_uploader :file, AssetUploader
4
+ belongs_to :theme
5
+
6
+ before_save :postprocess_asset
7
+
8
+ def postprocess_asset
9
+ AssetPostprocessor.new(self).process if file_changed?
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module Solidify
2
+ class Link < ActiveRecord::Base
3
+ extend FriendlyId
4
+ friendly_id :name, use: %i(finders slugged), slug_column: :url
5
+
6
+ belongs_to :link_list
7
+
8
+ alias_attribute :title, :name
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module Solidify
2
+ class LinkList < ActiveRecord::Base
3
+ include Solidify::Handle
4
+
5
+ has_many :links
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module Solidify
2
+ class Page < ActiveRecord::Base
3
+ include Solidify::Handle
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ module Solidify
2
+ # RailsSettings Model
3
+ class Setting < ::RailsSettings::Base
4
+ # self.table_name = "#{Solidify::Engine.engine_name}_settings"
5
+ source Rails.root.join('config', 'app.yml')
6
+ namespace Rails.env
7
+ end
8
+ end
@@ -0,0 +1,19 @@
1
+ module Solidify
2
+ class Theme < ActiveRecord::Base
3
+ has_many :assets
4
+
5
+ def settings
6
+ settings = Redis.current.get("solidify_themes_#{id}")
7
+ settings ||= Redis.current.get('solidify_themes_')
8
+ JSON.parse(settings)
9
+ end
10
+
11
+ def previewable
12
+ true
13
+ end
14
+
15
+ def processing
16
+ false
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ module Spree
2
+ Address.class_eval do
3
+ extend Solidify::ValidationCancel
4
+ cancel_validates :country_id
5
+
6
+ has_many :user_addresses, -> { active }
7
+ has_many :users, through: :user_addresses
8
+
9
+ def postal_code_validate; end
10
+
11
+ alias_attribute :country, :country_name
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module Spree
2
+ Image.class_eval do
3
+ def as_json(_options = {})
4
+ attachment.url
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Spree
2
+ LineItem.class_eval do
3
+ def as_json(_options = {})
4
+ Spree::LineItemDrop.new(self).as_json
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ module Spree
2
+ Order.class_eval do
3
+ scope :complete, -> { where(state: OrderState::COMPLETE) }
4
+ scope :by_completed_at, -> { order(:completed_at) }
5
+
6
+ def as_json(_options = {})
7
+ Spree::OrderDrop.new(self).as_json
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ module Spree
2
+ Product.class_eval do
3
+ include ::RailsSettings::Extend
4
+ include ::Solidify::Handle
5
+
6
+ attr_accessor :selected_variant
7
+ end
8
+ end
@@ -0,0 +1,20 @@
1
+ module Spree
2
+ Taxon.class_eval do
3
+ include ::Solidify::Handle
4
+
5
+ has_one :image,
6
+ as: :viewable, dependent: :destroy, class_name: 'Spree::Image'
7
+
8
+ class << self
9
+ def find_or_create_collections_all
10
+ collection = Spree::Taxon.find_by(handle: 'all')
11
+
12
+ if collection.blank?
13
+ collection = ::Solidify::CollectionsAllBuilder.create!
14
+ end
15
+
16
+ collection
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ User.class_eval do
3
+ # include Spree::OrderState
4
+
5
+ # has_many :orders, -> { where.not(state: OrderState::CART) }
6
+ # has_one :cart, -> { where(state: OrderState::CART) },
7
+ # class_name: 'Spree::Order'
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ Variant.class_eval do
3
+ def available
4
+ true
5
+ end
6
+
7
+ def as_json(_options = {})
8
+ Spree::VariantDrop.new(self).as_json
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Solidify
2
+ class Search
3
+ include ::Liquid::Rails::Droppable
4
+
5
+ attr_accessor :performed, :results, :results_count, :terms
6
+
7
+ def initialize(performed: nil, results: nil, results_count: nil, terms: nil)
8
+ @performed = performed
9
+ @results = results
10
+ @results_count = results_count
11
+ @terms = terms
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # copied from: https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Upload-from-a-string-in-Rails-3-or-later
2
+ module Solidify
3
+ class AppSpecificStringIO < StringIO
4
+ attr_accessor :filepath
5
+
6
+ def initialize(*args)
7
+ super(*args[1..-1])
8
+ @filepath = args[0]
9
+ end
10
+
11
+ def original_filename
12
+ File.basename(@filepath)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ module Solidify
2
+ module AssetCompiler
3
+ def initialize(template)
4
+ @template = template
5
+ end
6
+
7
+ def compile
8
+ raise 'Implement in subclass'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,53 @@
1
+ module Solidify
2
+ class AssetPostprocessor
3
+ def initialize(asset)
4
+ @asset = asset
5
+ end
6
+
7
+ def process
8
+ process_for_key(
9
+ asset: @asset,
10
+ key: @asset.key,
11
+ template: File.read(@asset.file.path),
12
+ settings: @asset.theme.settings
13
+ )
14
+ end
15
+
16
+ private
17
+
18
+ def process_for_key(asset:, key:, template:, settings:)
19
+ return unless key.start_with?('assets/')
20
+ if key.end_with?('.liquid')
21
+ process_liquid(asset: asset, key: key.gsub(/.liquid$/, ''),
22
+ template: template, settings: settings)
23
+ elsif key.end_with?('.scss')
24
+ process_scss(asset: asset, key: key, template: template)
25
+ end
26
+ end
27
+
28
+ def process_liquid(asset:, key:, template:, settings:)
29
+ rendered_liquid = LiquidAssetCompiler.new(template, settings,
30
+ asset.theme).compile
31
+ if key.end_with?('.scss')
32
+ process_scss(asset: asset, key: key, template: rendered_liquid)
33
+ else
34
+ update_or_create_asset(key: key,
35
+ theme: asset.theme, contents: rendered_liquid)
36
+ end
37
+ end
38
+
39
+ def process_scss(asset:, key:, template:)
40
+ rendered_css = ScssAssetCompiler.new(template).compile
41
+ new_asset = Asset.where(key: "#{key}.css",
42
+ theme: asset.theme).first_or_initialize
43
+ new_asset.update_attributes(
44
+ file: AppSpecificStringIO.new("#{key}.css", rendered_css)
45
+ )
46
+ end
47
+
48
+ def update_or_create_asset(key:, theme:, contents:)
49
+ new_asset = Asset.where(key: key, theme: theme).first_or_initialize
50
+ new_asset.update_attributes(file: AppSpecificStringIO.new(key, contents))
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,12 @@
1
+ module Solidify
2
+ class CollectionsAllBuilder
3
+ def self.create!
4
+ ::Spree::Taxon.create!(
5
+ handle: 'all',
6
+ permalink: 'all',
7
+ title: 'Products',
8
+ products: Spree::Product.all
9
+ )
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,26 @@
1
+ module Solidify
2
+ class LinkListSeeder
3
+ # rubocop:disable Metrics/MethodLength
4
+ def seed
5
+ LinkList.create(
6
+ [
7
+ {
8
+ title: 'Main menu',
9
+ handle: 'main-menu',
10
+ links: [
11
+ Link.new(title: 'Home', url: '/'),
12
+ Link.new(title: 'Catalog', url: '/collections/all')
13
+ ]
14
+ },
15
+ {
16
+ title: 'Footer',
17
+ handle: 'footer',
18
+ links: [
19
+ Link.new(title: 'Search', url: '/search')
20
+ ]
21
+ }
22
+ ]
23
+ )
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ module Solidify
2
+ class LiquidAssetCompiler
3
+ include AssetCompiler
4
+
5
+ def initialize(template, settings, theme)
6
+ super(template)
7
+ @settings = settings
8
+ @theme = theme
9
+ end
10
+
11
+ def compile
12
+ liquid = ::Liquid::Template.parse(@template)
13
+ assigns = { 'settings' => @settings }
14
+ liquid.render(assigns,
15
+ filters: [UrlFilters],
16
+ registers: { theme: @theme })
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ module Solidify
2
+ class ScssAssetCompiler
3
+ include AssetCompiler
4
+
5
+ def compile
6
+ options = {
7
+ style: :compressed,
8
+ syntax: :scss,
9
+ cache: false,
10
+ full_exception: true
11
+ }
12
+ ::Sass::Engine.new(@template, options).render
13
+ end
14
+ end
15
+ end