From 68e0be16b25b3b424f673dfc15e013e4b7f4448a Mon Sep 17 00:00:00 2001 From: Samruddhi Date: Sat, 17 Dec 2022 20:51:29 +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 ++-- config/locales/devise.en.yml | 59 +++++++++ config/routes.rb | 2 +- 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 +- 11 files changed, 246 insertions(+), 50 deletions(-) create mode 100644 app/controllers/contents_controller.rb create mode 100644 config/locales/devise.en.yml 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/config/locales/devise.en.yml b/config/locales/devise.en.yml new file mode 100644 index 0000000..abccdb0 --- /dev/null +++ b/config/locales/devise.en.yml @@ -0,0 +1,59 @@ +# Additional translations at https://github.com/plataformatec/devise/wiki/I18n + +en: + devise: + confirmations: + confirmed: "Your account was successfully confirmed." + send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes." + failure: + already_authenticated: "You are already signed in." + inactive: "Your account is not activated yet." + invalid: "Invalid email or password." + locked: "Your account is locked." + last_attempt: "You have one more attempt before your account will be locked." + not_found_in_database: "Invalid email or password." + timeout: "Your session expired. Please sign in again to continue." + unauthenticated: "You need to sign in or sign up before continuing." + unconfirmed: "You have to confirm your account before continuing." + mailer: + confirmation_instructions: + subject: "Confirmation instructions" + reset_password_instructions: + subject: "Reset password instructions" + unlock_instructions: + subject: "Unlock Instructions" + omniauth_callbacks: + failure: "Could not authenticate you from %{kind} because \"%{reason}\"." + success: "Successfully authenticated from %{kind} account." + passwords: + no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided." + send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." + updated: "Your password was changed successfully. You are now signed in." + updated_not_active: "Your password was changed successfully." + registrations: + destroyed: "Bye! Your account was successfully cancelled. We hope to see you again soon." + signed_up: "Welcome! You have signed up successfully." + signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated." + signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked." + signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account." + update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address." + updated: "You updated your account successfully." + sessions: + signed_in: "Signed in successfully." + signed_out: "Signed out successfully." + unlocks: + send_instructions: "You will receive an email with instructions about how to unlock your account in a few minutes." + send_paranoid_instructions: "If your account exists, you will receive an email with instructions about how to unlock it in a few minutes." + unlocked: "Your account has been unlocked successfully. Please sign in to continue." + errors: + messages: + already_confirmed: "was already confirmed, please try signing in" + confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one" + expired: "has expired, please request a new one" + not_found: "not found" + not_locked: "was not locked" + not_saved: + one: "1 error prohibited this %{resource} from being saved:" + other: "%{count} errors prohibited this %{resource} from being saved:" diff --git a/config/routes.rb b/config/routes.rb index ae6093d..7db7c4f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,5 +11,5 @@ end end #root 'contents#index' - mount Sidekiq::Web, at:'/sidekiq' + mount Sidekiq :: Web , at : '/sidekiq' 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