From 295534e4abf084b839f595427912b72f598aee8c Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Tue, 23 Feb 2016 14:58:20 +0800 Subject: [PATCH 1/4] migrate to using aws/paperclip for metacodes. RUN RAKE TASK ON PRODUCTION --- Gemfile.lock | 3 - app/models/metacode.rb | 9 ++ app/views/metacodes/_form.html.erb | 2 +- ...061711_add_attachment_icon_to_metacodes.rb | 8 ++ db/schema.rb | 12 ++- db/seeds.rb | 94 +++++++++---------- lib/tasks/aws.rake | 17 ++++ 7 files changed, 90 insertions(+), 55 deletions(-) create mode 100644 db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb create mode 100644 lib/tasks/aws.rake diff --git a/Gemfile.lock b/Gemfile.lock index 3a5f1b41..eb8edec5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -272,6 +272,3 @@ DEPENDENCIES tunemygc uglifier uservoice-ruby - -BUNDLED WITH - 1.11.2 diff --git a/app/models/metacode.rb b/app/models/metacode.rb index aa8f9104..954605fd 100644 --- a/app/models/metacode.rb +++ b/app/models/metacode.rb @@ -3,6 +3,15 @@ class Metacode < ActiveRecord::Base has_many :metacode_sets, :through => :in_metacode_sets has_many :topics + # This method associates the attribute ":icon" with a file attachment + has_attached_file :icon, :styles => { + :ninetysix => ['96x96#', :png], + }, + :default_url => 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_wildcard.png' + + # Validate the attached icon is image/jpg, image/png, etc + validates_attachment_content_type :icon, :content_type => /\Aimage\/.*\Z/ + def hasSelected(user) return true if user.settings.metacodes.include? self.id.to_s return false diff --git a/app/views/metacodes/_form.html.erb b/app/views/metacodes/_form.html.erb index ee19048b..b82eabc7 100644 --- a/app/views/metacodes/_form.html.erb +++ b/app/views/metacodes/_form.html.erb @@ -18,7 +18,7 @@
<%= f.label :icon %> - <%= f.text_field :icon %> + <%= f.file_field :icon %>
diff --git a/db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb b/db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb new file mode 100644 index 00000000..a3d17047 --- /dev/null +++ b/db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb @@ -0,0 +1,8 @@ +class AddAttachmentIconToMetacodes < ActiveRecord::Migration + def change + change_table :metacodes do |t| + t.rename :icon, :old_icon + t.attachment :icon + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 9ecb3488..4601c71a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160120061513) do +ActiveRecord::Schema.define(version: 20160223061711) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -76,10 +76,14 @@ ActiveRecord::Schema.define(version: 20160120061513) do create_table "metacodes", force: :cascade do |t| t.text "name" - t.string "icon" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "old_icon" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "color" + t.string "icon_file_name" + t.string "icon_content_type" + t.integer "icon_file_size" + t.datetime "icon_updated_at" end create_table "synapses", force: :cascade do |t| diff --git a/db/seeds.rb b/db/seeds.rb index 51aa01d9..102332cc 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -24,283 +24,283 @@ User.new({ ## METACODES Metacode.create({ name: 'Action', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_action.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_action.png', color: '#BD6C85' }) Metacode.create({ name: 'Activity', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_activity.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_activity.png', color: '#6EBF65' }) Metacode.create({ name: 'Catalyst', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_catalyst.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_catalyst.png', color: '#EF8964', }) Metacode.create({ name: 'Closed', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_closedissue.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_closedissue.png', color: '#ABB49F', }) Metacode.create({ name: 'Process', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_process.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_process.png', color: '#BDB25E', }) Metacode.create({ name: 'Future', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_futuredev.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_futuredev.png', color: '#25A17F', }) Metacode.create({ name: 'Group', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_group.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_group.png', color: '#7076BC', }) Metacode.create({ name: 'Implication', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_implication.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_implication.png', color: '#83DECA', }) Metacode.create({ name: 'Insight', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_insight.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_insight.png', color: '#B074AD', }) Metacode.create({ name: 'Intention', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_intention.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_intention.png', color: '#BAEAFF', }) Metacode.create({ name: 'Knowledge', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_knowledge.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_knowledge.png', color: '#60ACF7', }) Metacode.create({ name: 'Location', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_location.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_location.png', color: '#ABD9A7', }) Metacode.create({ name: 'Need', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_need.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_need.png', color: '#D2A7D4', }) Metacode.create({ name: 'Open', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_openissue.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_openissue.png', color: '#9BBF71', }) Metacode.create({ name: 'Opportunity', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_opportunity.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_opportunity.png', color: '#889F64', }) Metacode.create({ name: 'Person', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_person.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_person.png', color: '#DE925F', }) Metacode.create({ name: 'Platform', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_platform.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_platform.png', color: '#21C8FE', }) Metacode.create({ name: 'Problem', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_problem.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_problem.png', color: '#99CFC4', }) Metacode.create({ name: 'Resource', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_resource.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_resource.png', color: '#C98C63', }) Metacode.create({ name: 'Role', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_role.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_role.png', color: '#A8595D', }) Metacode.create({ name: 'Task', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_task.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_task.png', color: '#3397C4', }) Metacode.create({ name: 'Trajectory', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_trajectory.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_trajectory.png', color: '#D3AA4C', }) Metacode.create({ name: 'Argument', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_argument.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_argument.png', color: '#7FAEFD', }) Metacode.create({ name: 'Con', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_con.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_con.png', color: '#CF7C74', }) Metacode.create({ name: 'Subject', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_subject.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_subject.png', color: '#8293D8', }) Metacode.create({ name: 'Decision', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_decision.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_decision.png', color: '#CCA866', }) Metacode.create({ name: 'Event', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_event.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_event.png', color: '#F5854B', }) Metacode.create({ name: 'Example', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_example.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_example.png', color: '#618C61', }) Metacode.create({ name: 'Experience', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_experience.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_experience.png', color: '#BE995F', }) Metacode.create({ name: 'Feedback', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_feedback.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_feedback.png', color: '#54A19D', }) Metacode.create({ name: 'Aim', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_aim.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_aim.png', color: '#B0B0B0', }) Metacode.create({ name: 'Good', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_goodpractice.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_goodpractice.png', color: '#BD9E86', }) Metacode.create({ name: 'Idea', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_idea.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_idea.png', color: '#C4BC5E', }) Metacode.create({ name: 'List', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_list.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_list.png', color: '#B7A499', }) Metacode.create({ name: 'Media', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_media.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_media.png', color: '#6D94CC', }) Metacode.create({ name: 'Metamap', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_metamap.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_metamap.png', color: '#AEA9FD', }) Metacode.create({ name: 'Model', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_model.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_model.png', color: '#B385BA', }) Metacode.create({ name: 'Note', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_note.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_note.png', color: '#A389A1', }) Metacode.create({ name: 'Perspective', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_perspective.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_perspective.png', color: '#2EB6CC', }) Metacode.create({ name: 'Pro', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_pro.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_pro.png', color: '#89B879', }) Metacode.create({ name: 'Project', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_project.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_project.png', color: '#85A050', }) Metacode.create({ name: 'Question', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_question.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_question.png', color: '#5CB3B3', }) Metacode.create({ name: 'Reference', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_reference.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_reference.png', color: '#A7A7A7', }) Metacode.create({ name: 'Research', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_research.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_research.png', color: '#CD8E89', }) Metacode.create({ name: 'Status', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_status.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_status.png', color: '#EFA7C0', }) Metacode.create({ name: 'Tool', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_tool.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_tool.png', color: '#828282', }) Metacode.create({ name: 'Wildcard', - icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_wildcard.png', + icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_wildcard.png', color: '#73C7DE', }) ## END METACODES diff --git a/lib/tasks/aws.rake b/lib/tasks/aws.rake new file mode 100644 index 00000000..c49f3f81 --- /dev/null +++ b/lib/tasks/aws.rake @@ -0,0 +1,17 @@ +namespace :aws do + desc 'migrate metacodes to aws' + task metacode_icon_migrate: :environment do + def no_aws(msg) + Rails.logger.error msg + end + + no_aws 'You need to configure S3_BUCKET' unless ENV['S3_BUCKET'].present? + no_aws 'You need to configure AWS_ACCESS_KEY_ID' unless ENV['AWS_ACCESS_KEY_ID'].present? + no_aws 'You need to configure AWS_SECRET_ACCESS_KEY' unless ENV['AWS_SECRET_ACCESS_KEY'].present? + + Metacode.find_each do |metacode| + metacode.icon = metacode.old_icon + metacode.save + end + end +end From 40cd1ebb5c224269edb7322da1b6687e82e64c1a Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Thu, 25 Feb 2016 14:41:47 +0800 Subject: [PATCH 2/4] modify metacodes to instead have two fields, and validate that only one is present. Manual icons can be entered through rake tasks or on the rails console or in db seed --- app/controllers/metacodes_controller.rb | 5 +- app/models/metacode.rb | 45 ++++++++- app/views/metacodes/_form.html.erb | 3 +- app/views/metacodes/index.html.erb | 4 +- ...061711_add_attachment_icon_to_metacodes.rb | 4 +- db/schema.rb | 27 ++++-- db/seeds.rb | 94 +++++++++---------- lib/tasks/aws.rake | 17 ---- 8 files changed, 116 insertions(+), 83 deletions(-) delete mode 100644 lib/tasks/aws.rake diff --git a/app/controllers/metacodes_controller.rb b/app/controllers/metacodes_controller.rb index f026c58a..54956c60 100644 --- a/app/controllers/metacodes_controller.rb +++ b/app/controllers/metacodes_controller.rb @@ -5,9 +5,6 @@ class MetacodesController < ApplicationController # GET /metacodes.json def index @metacodes = Metacode.order("name").all - @metacodes.map do |metacode| - metacode.icon = ActionController::Base.helpers.asset_path(metacode.icon) - end respond_to do |format| format.html { @@ -73,6 +70,6 @@ class MetacodesController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def metacode_params - params.require(:metacode).permit(:id, :name, :icon, :color) + params.require(:metacode).permit(:id, :name, :aws_icon, :manual_icon, :color) end end diff --git a/app/models/metacode.rb b/app/models/metacode.rb index 954605fd..68fc2de1 100644 --- a/app/models/metacode.rb +++ b/app/models/metacode.rb @@ -3,14 +3,34 @@ class Metacode < ActiveRecord::Base has_many :metacode_sets, :through => :in_metacode_sets has_many :topics - # This method associates the attribute ":icon" with a file attachment - has_attached_file :icon, :styles => { + # This method associates the attribute ":aws_icon" with a file attachment + has_attached_file :aws_icon, :styles => { :ninetysix => ['96x96#', :png], }, :default_url => 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_wildcard.png' # Validate the attached icon is image/jpg, image/png, etc - validates_attachment_content_type :icon, :content_type => /\Aimage\/.*\Z/ + validates_attachment_content_type :aws_icon, :content_type => /\Aimage\/.*\Z/ + + validate :aws_xor_manual_icon + validate :manual_icon_https + before_create do + self.manual_icon = nil if self.manual_icon == "" + end + + def icon(*args) + if manual_icon.present? + manual_icon + else + aws_icon(*args) + end + end + + def as_json(options={}) + default = super(options) + default[:icon] = icon + default.except('aws_icon_file_name', 'aws_icon_content_type', 'aws_icon_file_size', 'aws_icon_updated_at', 'manual_icon') + end def hasSelected(user) return true if user.settings.metacodes.include? self.id.to_s @@ -21,4 +41,23 @@ class Metacode < ActiveRecord::Base return true if self.metacode_sets.include? metacode_set return false end + + private + + def aws_xor_manual_icon + if aws_icon.blank? && manual_icon.blank? + errors.add(:base, "Either aws_icon or manual_icon is required") + end + if aws_icon.present? && manual_icon.present? + errors.add(:base, "Specify aws_icon or manual_icon, not both") + end + end + + def manual_icon_https + if manual_icon.present? + unless manual_icon.starts_with? 'https' + errors.add(:base, "Manual icon must begin with https") + end + end + end end diff --git a/app/views/metacodes/_form.html.erb b/app/views/metacodes/_form.html.erb index b82eabc7..e6b71238 100644 --- a/app/views/metacodes/_form.html.erb +++ b/app/views/metacodes/_form.html.erb @@ -18,7 +18,8 @@
<%= f.label :icon %> - <%= f.file_field :icon %> + <%= f.hidden_field :manual_icon, value: nil %> + <%= f.file_field :aws_icon %>
diff --git a/app/views/metacodes/index.html.erb b/app/views/metacodes/index.html.erb index 4f3563f1..d60ffb8c 100644 --- a/app/views/metacodes/index.html.erb +++ b/app/views/metacodes/index.html.erb @@ -14,7 +14,7 @@ <% @metacodes.each do |metacode| %> <%= metacode.name %> - <%= asset_path metacode.icon %> + <%= metacode.icon %> <% if metacode.color %> <%= metacode.color %> @@ -22,7 +22,7 @@ <% else %> <% end %> - + <%= image_tag metacode.icon, width: 40 %> <%= link_to 'Edit', edit_metacode_path(metacode), :data => { :bypass => 'true'} %> <% end %> diff --git a/db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb b/db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb index a3d17047..82162f9f 100644 --- a/db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb +++ b/db/migrate/20160223061711_add_attachment_icon_to_metacodes.rb @@ -1,8 +1,8 @@ class AddAttachmentIconToMetacodes < ActiveRecord::Migration def change change_table :metacodes do |t| - t.rename :icon, :old_icon - t.attachment :icon + t.rename :icon, :manual_icon + t.attachment :aws_icon end end end diff --git a/db/schema.rb b/db/schema.rb index 4601c71a..e6a9bd11 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -63,6 +63,19 @@ ActiveRecord::Schema.define(version: 20160223061711) do add_index "maps", ["user_id"], name: "index_maps_on_user_id", using: :btree + create_table "messages", force: :cascade do |t| + t.text "message" + t.integer "user_id" + t.integer "resource_id" + t.string "resource_type" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "messages", ["resource_id"], name: "index_messages_on_resource_id", using: :btree + add_index "messages", ["resource_type"], name: "index_messages_on_resource_type", using: :btree + add_index "messages", ["user_id"], name: "index_messages_on_user_id", using: :btree + create_table "metacode_sets", force: :cascade do |t| t.string "name" t.text "desc" @@ -76,14 +89,14 @@ ActiveRecord::Schema.define(version: 20160223061711) do create_table "metacodes", force: :cascade do |t| t.text "name" - t.string "old_icon" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "manual_icon" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.string "color" - t.string "icon_file_name" - t.string "icon_content_type" - t.integer "icon_file_size" - t.datetime "icon_updated_at" + t.string "aws_icon_file_name" + t.string "aws_icon_content_type" + t.integer "aws_icon_file_size" + t.datetime "aws_icon_updated_at" end create_table "synapses", force: :cascade do |t| diff --git a/db/seeds.rb b/db/seeds.rb index 102332cc..daece06f 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -24,283 +24,283 @@ User.new({ ## METACODES Metacode.create({ name: 'Action', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_action.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_action.png', color: '#BD6C85' }) Metacode.create({ name: 'Activity', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_activity.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_activity.png', color: '#6EBF65' }) Metacode.create({ name: 'Catalyst', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_catalyst.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_catalyst.png', color: '#EF8964', }) Metacode.create({ name: 'Closed', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_closedissue.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_closedissue.png', color: '#ABB49F', }) Metacode.create({ name: 'Process', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_process.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_process.png', color: '#BDB25E', }) Metacode.create({ name: 'Future', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_futuredev.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_futuredev.png', color: '#25A17F', }) Metacode.create({ name: 'Group', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_group.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_group.png', color: '#7076BC', }) Metacode.create({ name: 'Implication', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_implication.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_implication.png', color: '#83DECA', }) Metacode.create({ name: 'Insight', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_insight.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_insight.png', color: '#B074AD', }) Metacode.create({ name: 'Intention', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_intention.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_intention.png', color: '#BAEAFF', }) Metacode.create({ name: 'Knowledge', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_knowledge.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_knowledge.png', color: '#60ACF7', }) Metacode.create({ name: 'Location', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_location.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_location.png', color: '#ABD9A7', }) Metacode.create({ name: 'Need', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_need.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_need.png', color: '#D2A7D4', }) Metacode.create({ name: 'Open', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_openissue.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_openissue.png', color: '#9BBF71', }) Metacode.create({ name: 'Opportunity', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_opportunity.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_opportunity.png', color: '#889F64', }) Metacode.create({ name: 'Person', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_person.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_person.png', color: '#DE925F', }) Metacode.create({ name: 'Platform', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_platform.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_platform.png', color: '#21C8FE', }) Metacode.create({ name: 'Problem', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_problem.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_problem.png', color: '#99CFC4', }) Metacode.create({ name: 'Resource', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_resource.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_resource.png', color: '#C98C63', }) Metacode.create({ name: 'Role', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_role.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_role.png', color: '#A8595D', }) Metacode.create({ name: 'Task', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_task.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_task.png', color: '#3397C4', }) Metacode.create({ name: 'Trajectory', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_trajectory.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/blueprint/96px/bp_trajectory.png', color: '#D3AA4C', }) Metacode.create({ name: 'Argument', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_argument.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_argument.png', color: '#7FAEFD', }) Metacode.create({ name: 'Con', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_con.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_con.png', color: '#CF7C74', }) Metacode.create({ name: 'Subject', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_subject.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_subject.png', color: '#8293D8', }) Metacode.create({ name: 'Decision', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_decision.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_decision.png', color: '#CCA866', }) Metacode.create({ name: 'Event', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_event.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_event.png', color: '#F5854B', }) Metacode.create({ name: 'Example', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_example.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_example.png', color: '#618C61', }) Metacode.create({ name: 'Experience', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_experience.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_experience.png', color: '#BE995F', }) Metacode.create({ name: 'Feedback', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_feedback.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_feedback.png', color: '#54A19D', }) Metacode.create({ name: 'Aim', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_aim.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_aim.png', color: '#B0B0B0', }) Metacode.create({ name: 'Good', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_goodpractice.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_goodpractice.png', color: '#BD9E86', }) Metacode.create({ name: 'Idea', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_idea.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_idea.png', color: '#C4BC5E', }) Metacode.create({ name: 'List', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_list.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_list.png', color: '#B7A499', }) Metacode.create({ name: 'Media', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_media.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_media.png', color: '#6D94CC', }) Metacode.create({ name: 'Metamap', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_metamap.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_metamap.png', color: '#AEA9FD', }) Metacode.create({ name: 'Model', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_model.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_model.png', color: '#B385BA', }) Metacode.create({ name: 'Note', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_note.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_note.png', color: '#A389A1', }) Metacode.create({ name: 'Perspective', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_perspective.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_perspective.png', color: '#2EB6CC', }) Metacode.create({ name: 'Pro', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_pro.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_pro.png', color: '#89B879', }) Metacode.create({ name: 'Project', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_project.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_project.png', color: '#85A050', }) Metacode.create({ name: 'Question', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_question.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_question.png', color: '#5CB3B3', }) Metacode.create({ name: 'Reference', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_reference.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_reference.png', color: '#A7A7A7', }) Metacode.create({ name: 'Research', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_research.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_research.png', color: '#CD8E89', }) Metacode.create({ name: 'Status', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_status.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_status.png', color: '#EFA7C0', }) Metacode.create({ name: 'Tool', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_tool.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_tool.png', color: '#828282', }) Metacode.create({ name: 'Wildcard', - icon_file_name: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_wildcard.png', + manual_icon: 'https://s3.amazonaws.com/metamaps-assets/metacodes/generics/96px/gen_wildcard.png', color: '#73C7DE', }) ## END METACODES diff --git a/lib/tasks/aws.rake b/lib/tasks/aws.rake deleted file mode 100644 index c49f3f81..00000000 --- a/lib/tasks/aws.rake +++ /dev/null @@ -1,17 +0,0 @@ -namespace :aws do - desc 'migrate metacodes to aws' - task metacode_icon_migrate: :environment do - def no_aws(msg) - Rails.logger.error msg - end - - no_aws 'You need to configure S3_BUCKET' unless ENV['S3_BUCKET'].present? - no_aws 'You need to configure AWS_ACCESS_KEY_ID' unless ENV['AWS_ACCESS_KEY_ID'].present? - no_aws 'You need to configure AWS_SECRET_ACCESS_KEY' unless ENV['AWS_SECRET_ACCESS_KEY'].present? - - Metacode.find_each do |metacode| - metacode.icon = metacode.old_icon - metacode.save - end - end -end From ac1d4f70b6b18d4677b10fe1f4ff2591326a5a5b Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Fri, 26 Feb 2016 14:04:01 +0800 Subject: [PATCH 3/4] show old image on metacode edit form; tweak css of admin area --- app/assets/stylesheets/admin.css | 63 --------- app/assets/stylesheets/admin.scss.erb | 188 ++++++++++++++++++++++++++ app/views/metacodes/_form.html.erb | 13 +- 3 files changed, 199 insertions(+), 65 deletions(-) delete mode 100644 app/assets/stylesheets/admin.css create mode 100644 app/assets/stylesheets/admin.scss.erb diff --git a/app/assets/stylesheets/admin.css b/app/assets/stylesheets/admin.css deleted file mode 100644 index 70e68127..00000000 --- a/app/assets/stylesheets/admin.css +++ /dev/null @@ -1,63 +0,0 @@ - - -.allMetacodes { - float:left; -} - -.allMetacodes span { - margin:4px 8px; - color:#67AF9F; -} - -.editMetacodes { - z-index:12; - width:auto; - color: #67AF9F; - padding:10px; - float:left; -} - -.editMetacodes ul { - display:block; -} - -.editMetacodes ul li { - clear:both; - list-style-type:none; - display:block; - padding:3px; -} - -.editMetacodes ul img { - width:40px; - height:40px; - float:left; -} - -.editMetacodes ul p { - float:left; - display: block; - margin: 0; - background: none; - padding: 10px 4px 2px 4px; -} - -.editMetacodes #filters-one { - float:left; -} - -.editMetacodes #filters-two { - float:left; -} - -.editMetacodes #filters-three { - float:left; -} - -.editMetacodes #filters-four { - float:left; -} - -.editMetacodes li.toggledOff { - opacity: 0.4; -} diff --git a/app/assets/stylesheets/admin.scss.erb b/app/assets/stylesheets/admin.scss.erb new file mode 100644 index 00000000..8fe47ae1 --- /dev/null +++ b/app/assets/stylesheets/admin.scss.erb @@ -0,0 +1,188 @@ +.allMetacodes { + float:left; + + span { + margin:4px 8px; + color:#67AF9F; + } +} + +.editMetacodes { + z-index:12; + width:auto; + color: #67AF9F; + padding:10px; + float:left; + + ul { + display:block; + } + + ul li { + clear:both; + list-style-type:none; + display:block; + padding:3px; + } + + ul img { + width:40px; + height:40px; + float:left; + } + + ul p { + float:left; + display: block; + margin: 0; + background: none; + padding: 10px 4px 2px 4px; + } + + #filters-one { + float:left; + } + + #filters-two { + float:left; + } + + #filters-three { + float:left; + } + + #filters-four { + float:left; + } + + li.toggledOff { + opacity: 0.4; + } +} + +.blackBox { + width: 760px; + margin: 0 auto; + padding: 20px 0 60px 20px; + background: rgba(0, 0, 0, 0.4); + color: white; + overflow: hidden; + position: relative; + + .metacodeSetsDescription { + width: 314px; + } + td.metacodeSetDesc { + width: 314px; + word-wrap: break-word; + } + .metacodeSetImage { + width: 36px; + height: 36px; + float: left; + } + tr { + display: table-row; + } + tr:nth-child(odd) { + background: rgba(0, 0, 0, 0.2); + } + tr:nth-child(even) { + background: rgba(0, 0, 0, 0.3); + } + th, + td { + padding: 10px; + } + td.iconURL { + max-width: 415px; + word-wrap: break-word; + } + .field { + margin: 15px 0 5px; + } + label { + float: left; + width: 100px; + margin-right: 15px; + margin-top: 0px; + } + input[type="text"] { + width: 336px; + height: 32px; + font-size: 15px; + direction: ltr; + -webkit-appearance: none; + appearance: none; + display: inline-block; + margin: 0; + padding: 0 8px; + background: #fff; + border: 1px solid #d9d9d9; + border-top: 1px solid #c0c0c0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + font: -webkit-small-control; + color: initial; + letter-spacing: normal; + word-spacing: normal; + text-transform: none; + text-indent: 0px; + text-shadow: none; + display: inline-block; + text-align: start; + font-family: arial; + } + textarea:hover, + input[type="text"]:hover { + border: 1px solid #b9b9b9; + border-top: 1px solid #a0a0a0; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + } + textarea { + padding: 8px; + border: 1px solid #d9d9d9; + border-top: 1px solid #c0c0c0; + resize: none; + font: -webkit-small-control; + letter-spacing: normal; + word-spacing: normal; + text-transform: none; + text-indent: 0px; + text-shadow: none; + text-align: start; + font-family: arial; + font-size: 15px; + line-height: 17px; + width: 318px; + } + .allMetacodes { + padding: 5px 0; + } + a.button { + margin-right: 20px; + line-height: 40px; + } + a.button, + input.add { + float: left; + margin-top: 5px; + height: 40px; + font-size: 17px; + width: auto; + padding: 0 30px; + cursor: pointer; + font-weight: normal; + } + a.button:hover, + input.add:hover { + -webkit-box-shadow: none; + box-shadow: none; + } +} diff --git a/app/views/metacodes/_form.html.erb b/app/views/metacodes/_form.html.erb index e6b71238..6e727ad5 100644 --- a/app/views/metacodes/_form.html.erb +++ b/app/views/metacodes/_form.html.erb @@ -2,7 +2,6 @@ <% if @metacode.errors.any? %>

<%= pluralize(@metacode.errors.count, "error") %> prohibited this metacode from being saved:

-
    <% @metacode.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • @@ -16,8 +15,18 @@ <%= f.text_field :name %>
+ <% unless @metacode.new_record? %> +
+ <%= f.label 'Current Icon' %> + <%= image_tag @metacode.icon, width: 96 %> +
+ <% end %>
- <%= f.label :icon %> + <% if @metacode.new_record? %> + <%= f.label 'Icon' %> + <% else %> + <%= f.label 'Replace Icon: ' %> + <% end %> <%= f.hidden_field :manual_icon, value: nil %> <%= f.file_field :aws_icon %>
From ba1427af45a751cc02d3abdacdab44477790109a Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Fri, 26 Feb 2016 14:20:14 +0800 Subject: [PATCH 4/4] update rspec for metacodes --- spec/controllers/metacodes_controller_spec.rb | 3 ++- spec/factories/metacodes.rb | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/spec/controllers/metacodes_controller_spec.rb b/spec/controllers/metacodes_controller_spec.rb index d950e77d..48688117 100644 --- a/spec/controllers/metacodes_controller_spec.rb +++ b/spec/controllers/metacodes_controller_spec.rb @@ -55,7 +55,8 @@ RSpec.describe MetacodesController, type: :controller do describe 'PUT #update' do context 'with valid params' do let(:new_attributes) do - { icon: 'https://newimages.ca/cool-image.jpg', + { manual_icon: 'https://newimages.ca/cool-image.jpg', + aws_icon: nil, color: '#ffffff', name: 'Cognition' } end diff --git a/spec/factories/metacodes.rb b/spec/factories/metacodes.rb index eb040e09..543e4955 100644 --- a/spec/factories/metacodes.rb +++ b/spec/factories/metacodes.rb @@ -1,7 +1,8 @@ FactoryGirl.define do factory :metacode do sequence(:name) { |n| "Cool Metacode ##{n}" } - icon 'https://images.com/image.png' + manual_icon 'https://images.com/image.png' + aws_icon nil color '#cccccc' end end