From 04e7992bf0dd3ac0eefad3b97ef4ee48801d07db Mon Sep 17 00:00:00 2001 From: Samruddhi Date: Sat, 17 Dec 2022 20:57:00 +0530 Subject: [PATCH] Added pg gem and removed mongo db related all changes. added migrations for User and Content models --- Gemfile | 65 +++++++--- app/controllers/contents_controller.rb | 112 ++++++++++++++++++ app/models/screamout/content.rb | 26 ++-- db/migrate/20221217151733_create_contents.rb | 9 ++ lib/screamout/engine.rb | 2 +- spec/dummy/config/application.rb | 3 +- spec/dummy/config/environments/development.rb | 1 + spec/dummy/config/mongoid.yml.ci | 13 -- spec/spec_helper.rb | 4 +- 9 files changed, 186 insertions(+), 49 deletions(-) create mode 100644 app/controllers/contents_controller.rb create mode 100644 db/migrate/20221217151733_create_contents.rb delete mode 100644 spec/dummy/config/mongoid.yml.ci diff --git a/Gemfile b/Gemfile index b5a1708..74f7207 100644 --- a/Gemfile +++ b/Gemfile @@ -1,26 +1,53 @@ -source "https://rubygems.org" - -# Declare your gem's dependencies in screamout.gemspec. -# Bundler will treat runtime dependencies like base dependencies, and -# development dependencies will be added by default to the :development group. -gemspec - -# Declare any dependencies that are still in development here instead of in -# your gemspec. These might include edge Rails or gems from your path or -# Git. Remember to move these dependencies to your gemspec before releasing -# your gem to rubygems.org. - -# To use debugger -# gem 'debugger' -gem 'mongoid' -gem 'jquery-ui-rails', '~> 5.0.5' -gem 'sass-rails', '4.0.3' -gem 'twitter-bootstrap-rails', '2.2.8' -gem 'simple_form', :git => 'git://github.com/plataformatec/simple_form.git' +source 'https://rubygems.org' + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '4.1.1' +gem 'mongoid', github:'mongoid/mongoid' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 4.0.3' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# Use CoffeeScript for .js.coffee assets and views +gem 'coffee-rails', '~> 4.0.0' +# See https://github.com/sstephenson/execjs#readme for more supported runtimes +gem 'therubyracer', platforms: :ruby +gem 'devise' +gem 'omniauth-google-oauth2' +gem 'omniauth' +gem 'simple_form' +gem 'mimemagic', github: 'mimemagicrb/mimemagic', ref: '01f92d86d15d85cfd0f20dabd025dcbd36a8a60f' +# Use jquery as the JavaScript library +# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem 'turbolinks' gem 'twitter-typeahead-rails' gem 'imgkit' gem "jquery-rails" +gem 'pg', '~> 0.18' +gem 'activerecord' +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use unicorn as the app server +# gem 'unicorn' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +# Use debugger +# gem 'debugger', group: [:development, :test] + +gem 'execjs' #for executing javascript from ruby + +group :development, :test do #overrite existing..generate spec directory,,include the gem in multiple rails env + #gem 'debugger' + gem 'rspec-rails' , '2.14.2' + gem 'factory_girl_rails' + gem 'faker' + gem 'database_cleaner' + gem 'simplecov', '~> 0.7.1' + gem 'guard-rspec', require: false +end +gem 'mongoid-rspec' #tests beginning with 'should' gem 'mongoid_taggable' gem 'mongoid_rateable', :git => 'git://github.com/PerfectMemory/mongoid_rateable.git' gem "bson" diff --git a/app/controllers/contents_controller.rb b/app/controllers/contents_controller.rb new file mode 100644 index 0000000..b20afe9 --- /dev/null +++ b/app/controllers/contents_controller.rb @@ -0,0 +1,112 @@ +class ContentsController < ApplicationController + + def index + #binding.pry + @contents = Content.all.desc(:created_at) + @con = Content.new + @c = [] + #@contents = Content.tagged_with_all(/#{params[:q]}/) + #@conc = content_to_hash(@content_selected) + end + + + def show + @content = Content.find(params[:id]) + end + + def new + @content = Content.new + @con = [] + end + + def details + @content = Content.find(params[:id]) + respond_to do |format| + format.js {} + end + end + + def create + @content = Content.new(content_params_input) + @content.image_file_name = @content.title + + if @content.save + ImageWorker.perform_async(@content.id.to_s) + respond_to do |format| + format.html {redirect_to contents_path} + end + else + respond_to do |format| + format.html { render action: 'new' } + + end + end + end + + def edit + @content = Content.find(params[:id]) + end + + def destroy + @content = Content.where(id: params[:id]).first + + if @content.destroy + redirect_to contents_path + else + #flash[:notice] = ' not deleted' + flash.now[:error] = @content.errors.messages + render action: 'index' + end + end + + + def update + @content = Content.find(params[:id]) + @con = @content.tags.split(",") + @con = tags_to_hash(@con) + if @content.update_attributes(content_params_input) + redirect_to contents_path + else + render action: 'edit' + end + end + + def tags + @contents = Content.tagged_with_all(/#{params[:q]}/) + @tags = @contents.collect(&:tag_map).flatten.select{|t| t[:name] =~ /#{params[:q]}/} + + respond_to do |format| + format.html {render html: @tags} + format.json { render json: @tags} + end + end + + def content_ids + @tags_selected = Content.tags.select{|e| e =~ /#{params[:q]}/} + @content_selected = Content.where(:tags_array.in => @tags_selected).to_a + + respond_to do |format| + format.html + format.json {render json: @content_selected} + end + end + + private + def content_params_input + params.require(:content).permit(:url,:photo, :title, :tags, :rates, :user_id) + end + + def tags_to_hash(cons) + cons.map do |con| + {id: con, name: con} + end + end +#not required************************************ + + def content_to_hash(cons) + cons.map do |cons| + {id: cons[:_id].to_s, url: cons.url, title: cons.title, photo_url:cons.photo.url} + end + #binding.pry + end +end diff --git a/app/models/screamout/content.rb b/app/models/screamout/content.rb index e0de8bd..89a864c 100644 --- a/app/models/screamout/content.rb +++ b/app/models/screamout/content.rb @@ -1,25 +1,25 @@ -module Screamout +module Screamout < ActiveRecord::Base class Content - include Mongoid::Document - include Mongoid::Timestamps - include Mongoid::Taggable - include Mongoid::Paperclip + # include Mongoid::Document + # include Mongoid::Timestamps + # include Mongoid::Taggable + # include Mongoid::Paperclip IMAGE_PATH = "#{Rails.root}/public/snapshots/" #IMAGE_WIDTH = 100 IMAGE_HEIGHT = 600 - field :title, type: String - field :url, type: String - field :image_file_name, type:String - has_mongoid_attached_file :photo,:styles => {:original => ['1920x1680>', :jpg],:small => ['220x180!', :jpg]} + # field :title, type: String + # field :url, type: String + # field :image_file_name, type:String + # has_mongoid_attached_file :photo,:styles => {:original => ['1920x1680>', :jpg],:small => ['220x180!', :jpg]} rateable range: (0..5) belongs_to :user #validates :title, presence: true validates :url, presence: true, uniqueness: true, format: { with: /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}[:]?(([0-9]{1,5})?\/?.*)$)/i} validates :image_file_name, presence: true - validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "application/pdf"] + # validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "application/pdf"] def image_file_name=(title) @@ -32,17 +32,17 @@ def name def tag_map tags.split(",").collect{|t| {id: t, name: t}} - end + end def as_json(options ={}) options = {only: [:_id,:title, :url, :tags_array], methods: [:id, :photo_url, :name, :user_id, :user_photo_url]} super end - + def id self._id.to_s end - + def photo_url self.photo.url(:small) end diff --git a/db/migrate/20221217151733_create_contents.rb b/db/migrate/20221217151733_create_contents.rb new file mode 100644 index 0000000..12b83ae --- /dev/null +++ b/db/migrate/20221217151733_create_contents.rb @@ -0,0 +1,9 @@ +class CreateContents < ActiveRecord::Migration + def change + create_table :contents do |t| + t.string :title + t.string :url + t.string :image_file_name + end + end +end diff --git a/lib/screamout/engine.rb b/lib/screamout/engine.rb index 9b798c7..42f081a 100644 --- a/lib/screamout/engine.rb +++ b/lib/screamout/engine.rb @@ -2,7 +2,7 @@ module Screamout class Engine < ::Rails::Engine isolate_namespace Screamout config.generators do |g| - g.orm :mongoid + g.orm :active_record end end end diff --git a/spec/dummy/config/application.rb b/spec/dummy/config/application.rb index 07fb10d..cf9d4ba 100644 --- a/spec/dummy/config/application.rb +++ b/spec/dummy/config/application.rb @@ -10,9 +10,11 @@ Bundler.require(*Rails.groups) require "screamout" +require 'rails/all' module Dummy class Application < Rails::Application + config.generators.orm = :active_record # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. @@ -26,4 +28,3 @@ class Application < Rails::Application # config.i18n.default_locale = :de end end - diff --git a/spec/dummy/config/environments/development.rb b/spec/dummy/config/environments/development.rb index a384d95..90d9143 100644 --- a/spec/dummy/config/environments/development.rb +++ b/spec/dummy/config/environments/development.rb @@ -8,6 +8,7 @@ # Do not eager load code on boot. config.eager_load = false + config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } # Show full error reports and disable caching. config.consider_all_requests_local = true diff --git a/spec/dummy/config/mongoid.yml.ci b/spec/dummy/config/mongoid.yml.ci deleted file mode 100644 index bab4346..0000000 --- a/spec/dummy/config/mongoid.yml.ci +++ /dev/null @@ -1,13 +0,0 @@ -test: - sessions: - default: - database: dummy_test - hosts: - - localhost:27017 - options: - read: primary - # In the test environment we lower the retries and retry interval to - # low amounts for fast failures. - max_retries: 1 - retry_interval: 0 - diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f253569..7b76f5a 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -47,7 +47,7 @@ config.after(:each) do DatabaseCleaner.clean end - #config.before(:each) { @routes = UserManager::Engine.routes } + #config.before(:each) { @routes = UserManager::Engine.routes } # If true, the base class of anonymous controllers will be inferred # automatically. This will be the default behavior in future versions of # rspec-rails. @@ -63,7 +63,7 @@ I18n.enforce_available_locales = false - config.include Mongoid::Matchers + # config.include Mongoid::Matchers config.extend ControllerHelper, type: :controller end