dimanche 30 décembre 2018

ruby hash get from dynamic key and value (MIB SNMP)

Im a newbie on ruby, i have hash data like below.

person = {"PoolName.11.22.33":"pool_a","PoolMemberName.11.22.33.11":"member_pool_a1","PoolMemberScore.11.22.33.11":0,"PoolName.11.22.44":"pool_b","PoolMemberName.11.22.44.11":"member_pool_b1","PoolMemberName.11.22.44.12":"member_pool_b2","PoolMemberScore.11.22.44.11":2,"PoolMemberScore.11.22.44.12":3,"PoolName.11.22.55":"pool_c","PoolMemberName.11.22.55.11":"member_pool_c1","PolMemberName.11.22.55.12":"member_pool_c2","PoolMemberName.11.22.55.13":"member_pool_c3","PoolMemberScore.11.22.55.11":11,"PoolMemberScore.11.22.55.12":22,"PoolMemberScore.11.22.55.13":33}

Results i should get like following below:

"pool_a.member_pool_a1" : 0,
"pool_b.member_pool_b1" : 2,
"pool_b.member_pool_b2" : 3,
"pool_c.member_pool_c1" : 11,
"pool_c.member_pool_c2" : 22,
"pool_c.member_pool_c3" : 33

I have code like following below :

begin
        person.each{|key|
            if ( key =~ /PoolName/ || key =~ /PoolMemberName/ )
                newid = key.gsub(/PoolName./, "").gsub(/PoolMemberName./, "")
                val = event.get(key).gsub(/\/Common\//, "").gsub(/\./, "_")
                event.set(newid, val)
                event.remove(key)
            end
        }

    rescue Exception => e
        event.set("logstash_ruby_exception", "underscores: " + e.message)
    end

samedi 29 décembre 2018

what will happen if i store collection of data into the instance variable under initialize method?

what will happen if i store collection of data into instance variable under initialize method?

when i create the object of the class, instance variable are there in the object with lots of data. I want to understand how it slow down the execution.

Any help would be appreciated.

vendredi 28 décembre 2018

How I can use database view with rails mysql? [on hold]

I want to use database view in rails and i'm using mysql.Please any body can help thanks in advance.

Rails: How to access session parameter / ActiveRecord::StatementInvalid in Orders#create

I am working on a multistep form for an order placement section which uses a session session[:order_params] to store all form inputs before submit.

I need to be able to access a particular parameter (land) from the session in order to query for another resource (shippingservice) when navigating back in the form.

In my orders_controller.rb I have:

@shippingservices = @cart.available_shipping_services.joins(:lands).where(:lands => {:id => params[:id]})

but would need to specify the land.id from the session[:order_params].

When using session[:order_params] I get ActiveRecord::StatementInvalid in Orders#create:

Mysql::Error: Unknown column 'id.ship_to_last_name' in 'where clause': SELECT `shippingservices`.* FROM `shippingservices` 
INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` 
INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` 
INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` 
WHERE `id`.`ship_to_last_name` = 'Smith' 
AND `id`.`ship_to_address` = 'Somewherestreet' 
AND `id`.`ship_to_city` = 'Nowheretown' 
AND `id`.`ship_to_postal_code` = '99999' 
AND `id`.`phone_number` = 'some number' 
AND `id`.`shippingservice_id` = '34' 
AND `id`.`email` = 'someone@example.tld' 
AND `id`.`land_id` = '85' 
AND `id`.`ship_to_first_name` = 'John' 
AND (weightmin <= 200 AND weightmax >= 200 AND heightmin <= 12 AND heightmax >= 12 AND shippingservices.shippingcarrier = '1') AND (lengthmax >= 210 AND widthmax >= 149)

Since the correct land_id is present I am wondering how to provide only that value to the query.

Thank you in advance!

How to stop a nohup process running rails server on port 3000

I have started a rails server puma by using the following command.

 nohup rails server &

its output was [2] 22481 along with the following:

nohup: ignoring input and appending output to 'nohup.out'

But now I have forget the returned process id, so how can I detect the process id so as to delete the process on aws.

jeudi 27 décembre 2018

Rails: dynamic select on multistep form not keeping selected

I am working on a multistep form for an order placement process following Ryan Bates's Multistep Tutorial #217 which uses a session. On the first step I have two select fields: one for countries (land) and a dynamic one for shipping services. After a land has been selected the shipping services are loaded into the second select field through javascript/jQuery and the total price is calculated again through JS.

app/views/orders/_shipping_step.html.erb

<%= f.collection_select(:land_id, Land.all, :id, :name, {:prompt => "select a country"}, {:id => 'lands_select'}) %>
<%= f.select(:shippingservice_id, options_for_select(@shippingservices.collect { |s| [s.name.titleize, s.id, {'data-price' => s.price}] }, :selected => f.object.shippingservice_id), {:prompt => "select a carrier"}, {:id => "shippingservices_select"}) %>

ajax script

$(document).on("change", "#lands_select", function(event){
  $.ajax({
    url: "/carts/update_shipping/" + event.target.value,
    type: "GET",
  })
});

On the shipping details step of the multistep form I can choose a land, the corresponding options for shipment are loaded and I can choose one. When progressing to the payment step, I can place the order and everything works, but in case I want to return from the payment step to the order step to change something, the shipping services selector displays options for land_id = 1, while the land select displays the choose country, for example id 84.

I added :selected => session[:cart_params]) to the shipping service select, but it does not appear to be working. :selected => f.object.shippingservice_id keeps priority or standard shipping options, but for Land_id 1.

How can I get this working? Is it the select field or the JS? Why doesn't the second select keep the chosen land in memory?

Thank you in advance!

LOG:

Started GET "/orders/new" for 127.0.0.1 at Thu Dec 27 22:08:52 +0100 2018
Processing by OrdersController#new as HTML
  Cart Load (0.3ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (1.4ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.3ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  CACHE (0.0ms)  SELECT `lands`.* FROM `lands` 
  Shippingservice Load (0.6ms)  SELECT `shippingservices`.* FROM `shippingservices` INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` WHERE `lands`.`id` = 1 AND (weightmin <= 50 AND weightmax >= 50 AND heightmin <= 3 AND heightmax >= 3 AND shippingservices.shippingcarrier = ‘1’) AND (lengthmax >= 210 AND widthmax >= 149)
  Product Load (0.3ms)  SELECT `products`.* FROM `products` WHERE `products`.`id` = 3 LIMIT 1
  Hero Load (0.2ms)  SELECT `heros`.* FROM `heros` WHERE `heros`.`id` = 18 LIMIT 1
  Rendered orders/_shipping_step.html.erb (13.7ms)
  Rendered orders/new.html.erb within layouts/application (16.2ms)
  Rendered layouts/_header.html.erb (0.1ms)
  Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 44ms (Views: 23.0ms | ActiveRecord: 3.9ms)

Progressing to the payment step:

Started POST "/orders" for 127.0.0.1 at Thu Dec 27 22:09:33 +0100 2018
Processing by OrdersController#create as HTML
  Parameters: {"order"=>{"ship_to_last_name"=>”surname”, "ship_to_address"=>”street”, "ship_to_city"=>”city”, "ship_to_postal_code"=>”postcode”, "phone_number"=>”somenumber”, "shippingservice_id"=>"27", "email"=>”something@example.tld”, "land_id"=>"85", "ship_to_first_name"=>”firstname”}, "authenticity_token"=>”somestring”, "utf8"=>"✓", "commit"=>"Continue"}
  Cart Load (0.2ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (1.5ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.4ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  Land Load (0.4ms)  SELECT `lands`.* FROM `lands` WHERE `lands`.`id` = 85 LIMIT 1
  Shippingservice Load (0.3ms)  SELECT `shippingservices`.* FROM `shippingservices` WHERE `shippingservices`.`id` = 27 LIMIT 1
  Product Load (0.3ms)  SELECT `products`.* FROM `products` WHERE `products`.`id` = 3 LIMIT 1
  Hero Load (0.3ms)  SELECT `heros`.* FROM `heros` WHERE `heros`.`id` = 18 LIMIT 1
  Rendered orders/_payment_step.html.erb (7.0ms)
  Rendered orders/new.html.erb within layouts/application (8.9ms)
  Rendered layouts/_header.html.erb (0.1ms)
  Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 39ms (Views: 13.7ms | ActiveRecord: 4.6ms)

Selecting the shipping country:

Started GET "/carts/update_shipping/85" for 127.0.0.1 at Thu Dec 27 22:09:27 +0100 2018
Processing by CartsController#update_shipping as */*
  Parameters: {"id"=>"85"}
  Cart Load (0.2ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (66.9ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.4ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  Shippingservice Load (0.6ms)  SELECT `shippingservices`.* FROM `shippingservices` INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` WHERE `lands`.`id` = 85 AND (weightmin <= 50 AND weightmax >= 50 AND heightmin <= 3 AND heightmax >= 3 AND shippingservices.shippingcarrier = ‘1’) AND (lengthmax >= 210 AND widthmax >= 149)
  Rendered carts/_shippingservice.html.erb (0.2ms)
  Rendered carts/update_shipping.js.erb (2.9ms)
Completed 200 OK in 87ms (Views: 7.8ms | ActiveRecord: 68.6ms)

Returning to the shipping details step:

Started POST "/orders" for 127.0.0.1 at Thu Dec 27 22:09:35 +0100 2018
Processing by OrdersController#create as HTML
  Parameters: {"authenticity_token"=>”somestring”, "utf8"=>"✓", "back_button"=>"Back"}
  Cart Load (0.3ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (2.4ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.5ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.3ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.4ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  CACHE (0.0ms)  SELECT `lands`.* FROM `lands` 
  Shippingservice Load (0.7ms)  SELECT `shippingservices`.* FROM `shippingservices` INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` WHERE `lands`.`id` = 1 AND (weightmin <= 50 AND weightmax >= 50 AND heightmin <= 3 AND heightmax >= 3 AND shippingservices.shippingcarrier = ‘1’) AND (lengthmax >= 210 AND widthmax >= 149)
  Product Load (0.3ms)  SELECT `products`.* FROM `products` WHERE `products`.`id` = 3 LIMIT 1
  Hero Load (0.2ms)  SELECT `heros`.* FROM `heros` WHERE `heros`.`id` = 18 LIMIT 1
  Rendered orders/_shipping_step.html.erb (16.5ms)
  Rendered orders/new.html.erb within layouts/application (18.4ms)
  Rendered layouts/_header.html.erb (0.2ms)
  Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 109ms (Views: 24.0ms | ActiveRecord: 5.1ms)

Verify if user is approved by admin before login

Hello I followed this tutorial https://github.com/plataformatec/devise/wiki/How-To:-Require-admin-to-activate-account-before-sign_in to verify that the user is approved by the admin before he can connect.

I would like to add the condition to test that it is approved to connect

here is my controller session_controller.rb

class SessionsController < Devise::SessionsController
before_action :set_email

 def new
  super
 end

def create
 self.resource = warden.authenticate!(auth_options)
 set_flash_message(:notice, :signed_in) if is_navigational_format?
 sign_in(resource_name, resource)

 if !session[:return_to].blank?
  redirect_to session[:return_to]
  session[:return_to] = nil

 else
  respond_with resource, :location => after_sign_in_path_for(resource)
end

end

def confirm_email
 user = User.find_by_confirm_token(params[:id])
 if user
  user.email_activate
  flash[:success] = "Welcome to the Sample App! Your email has been 
confirmed.
  Please sign in to continue."
  redirect_to signin_url
 else
  flash[:error] = "Sorry. User does not exist"
  redirect_to root_url
end
end


def set_email
 @email = params[:email];
 @user1 = params[:user];
end



end

Thanks