Posts

What is the Peatio cryptocurrency exchange or trading plateform?

  Cryptocurrency Exchange A cryptocurrency is nothing but a digital currency. Cryptocurrency exchanges are the platforms where you can buy, sell or exchange cryptocurrencies with other digital currency or with other assets such as fiat money. Fiat currency is like paper money for example Rupees, Dollars whose value is decided by the government. To start with the cryptocurrency exchange, you have to create an account in a cryptocurrency exchange. The exchange will then verify your account. When you want to buy the cryptocurrency, check the asks and when you want to sell the cryptocurrency, check the bids. The ask represents the lowest price sell order that is currently available in the market or the lowest price that someone is willing to go short. The bids represent the highest price buy order that is currently available in the market. Peatio Cryptocurrency Exchange Peatio is an open-source cryptocurrency exchange developed in Ruby On Rails framework. You can easily use the Peatio cryp

Transition Block in Rails with_lock

What is with_lock? how it work Ans:  If two users read a value from a record and then update it simultaneously, one of the values has to “win” and data integrity will be compromised. This is dangerous especially when dealing with money or inventory stocks. For example: User has a card balance = 10 User opens browser A and fill out 5 USD to buy User opens browser B and fill out 10 USD to buy User hits “Buy” button of both browsers at the same time Request A reads card balance=10 Request B reads card balance=10 Request A updates balance -= 5 (balance now is 10-5=5) Request B still has the instance card balance=10 (even though request A already decremented it) Request B updates balance -= 10 (balance now is 10-10=0) Final balance is now 0 User was able to purchase 15 USD when the initial balance was only 10 USD. This is race condition potentially at its worst case! Rails doesn’t do locking when loading a row from the database by default. If the same row of data from a table is loaded by t

Faraday::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate has expired)

  require 'openssl' OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE put this lines in config/application.rb

unterminated string meets end of file +rails

 This error is because you are trying to instert special symbol in record. User.last.update(password: "!@#$") User.last.update(password: "!@/#$") //it will not throw any errors.

The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Array

 res.end() to res.send()

Some Ruby on Rails interview questions

 1) How flash message work in ruby on rails? Ans. They are stored in your session store. The default since rails 2.0 is the cookie store, but check in config/initializers/session_store.rb to check if you're using something other than the default. According to APIdock : ActionController/Flash, it is stored in a session. Note that if sessions are disabled only flash.now will work. When using flash.now, your values are not available in the next request. 2) What is the use of Asset-PipeLine in Rails? Ans. Assets(css, scss, js, coffeescript, images etc), its fast executed in rails application because of asset pipeline when we compile it or when its compiled, it will generate a single source code file or a manifest file, so that's why assets are interpret fastly. 3)   Difference between find and find_by? Ans . The find method is usually used to retrieve a row by ID:            Model.find(1)           And it will throw ActiveRecord::RecordNotFound error if record not found. find_by is

Some important and unknown(least used) ruby methods.

 1) inject or reduce      When called, the inject method will pass each element and accumulate each sequentially.     ex:         [1,2,3].inject(:+)    => ((1+2)+3))   //we have can any operator here i.e +,-,*,/,%         OR         [1,2,3].inject{|sum, value| sum + value } => 1 iteration:  (1 + 2)                                                                                             =>  2 iteration: (3(1st iteration sum)+3)            we  can also pass it a default value or base value for the accumulator.     ex:          [1,2,3].inject(0, :+)    => (0+(1+2)+3)) //so here initial value for sum is 0.          We can also use inject menthods for building hash's from the array's     ex:           [[:book, "data structure"], [:price, "400rs"]].inject({}) do |result, element|               result[element.first] = element.last               result           end            #=> {:book=>"data structure", :price=>"400rs&qu

Setup a cron job or scheduler for your rails application using whenever gem.

cd path to your project. gem 'whenever', require: false   add it to your gemfile run bundle install bundle exec wheneverize .   //This will create an initial config/schedule.rb Now create your job call it  from config/schedule.rb whenever --update-crontab   //update crontab crontab -l   //list all cron job set :output, "log/cron.log"    //if you want to set log file for cron job then that this line at the top of config/schedule.rb         in production server:                   after deployment :  bundle exec whenever whenever --update-crontab crontab -l source: https://github.com/javan/whenever https://www.rubyguides.com/2019/04/ruby-whenever-gem/

Setup ruby god for rails application || Daemons setup for rails application

 1) Install god on Ubuntu/Linux machine      sudo apt update      sudo apt install ruby-god 2) Create new rails application if you don't have existing 3) In your Gemfile add new gem       gem 'god', '~> 0.13.7', require: false 4) Then run bundle install 5) create a folder named daemons inside your  lib folder 6) create a file name daemons.god inside daemons folder (this file name or folder name can be anything its totally up to you) 7) Then paste this on you daemons.god file      ENV["RAILS_ENV"] = "development"      RAILS_ENV  = ENV.fetch('RAILS_ENV', 'production')      RAILS_ROOT = File.expand_path('../../..', __FILE__)      require 'shellwords'      # Create non-default log/daemons directory.      require 'fileutils'      FileUtils.mkdir_p "#{RAILS_ROOT}/log/daemons"      def daemon(name, options = {})        God.watch do |w|          command        = "bundle exec ruby lib/daemons/#{op

How to upgrade from Ubuntu Linux 16.04 to 18.04

Image
Type the apt command or apt-get command to upgrade existing system:   sudo apt update   sudo apt upgrade Reboot the Linux box if kernel was updated   sudo reboot If you have a ufw firewall running on ufw, open ssh port 1022 using the following ufw syntax:   sudo ufw allow 1022/tcp comment 'Temp open port ssh tcp port 1022 for upgrade' Upgrade the operating system to the latest release from the command-line by typing the following command:   sudo do-release-upgrade After some time you will see “System upgrade is complete” message. Press y to restart your system to load updates kernel and operating system for your cloud server: Verification Login using the ssh command:   ssh user@your-ubuntu-server Verify Ubuntu Linux kernel version with uname:   uname -r Make sure all needed ports are open and running with the ss command or netstat command:   sudo ss -tulpn   sudo netstat -tulpn Use grep command/egrep command or tail command/cat command to verify log files for errors:    dmesg