0
I am trying to execute a curl command inside my rails application. My rails application simply creates a ticket and for that I have to enter some information.
When person clicks on Save then it saves the data entered into DB. Now I am trying to run a curl script whenever a user clicks on Save.
**tickets_controller.rb**
Code without Curl Script:
def create
@ticket = Ticket.new(ticket_params)
respond_to do |format|
if @ticket.save
format.html { redirect_to @ticket, notice: 'Ticket was successfully created.' }
format.json { render :show, status: :created, location: @ticket }
else
format.html { render :new }
format.json { render json: @ticket.errors, status: :unprocessable_entity }
end
end
end
when I click on Save, it enters data into my DB and shows this in the log file:
Started POST "/tickets" for 127.0.0.1 at 2017-01-18 10:58:21 -0500
Processing by TicketsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"8L7gmdNZSJ389YpnyYsp4j5F+3lzaTQIP4fo+FZn6h9Qp6u2bA0cXstDLw2vX2fAPHCzKSgijwoDU0UHr+TT2g==", "ticket"=>{"record_id"=>"m2", "seat_id_seq"=>"m2", "address"=>"m2", "price_paid"=>"m2", "email_address"=>"m2"}, "commit"=>"Create Ticket"}
(0.1ms) begin transaction
SQL (0.4ms) INSERT INTO "tickets" ("record_id", "seat_id_seq", "address", "price_paid", "email_address", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?) [["record_id", "m2"], ["seat_id_seq", "m2"], ["address", "m2"], ["price_paid", "m2"], ["email_address", "m2"], ["created_at", "2017-01-18 15:58:21.219802"], ["updated_at", "2017-01-18 15:58:21.219802"]]
(181.4ms) commit transaction
Redirected to http://localhost:3000/tickets/2
Completed 302 Found in 189ms (ActiveRecord: 181.9ms)
Now I have a curl script which actually enters data into a different project:
curl -F token='08F14AE57696E458BA6FC6A203F57E69' -F overwriteBehavior=normal -F content=record -F type=flat -F format=json -F data='[{"record_id":"bbc","seat_id_seq":"bbb","address":"bbb","price":"bbb","email":"bbb","tickets1_complete":"2"}]' 'https://cri-datacap.org/api/'
It works perfectly fine and enters data into the another project when I run this on command prompt. Now I am merging this code into my rails project (tickets) and whenever person clicks on the save button, this script should execute and enters data into the another project.
def create
@ticket = Ticket.new(ticket_params)
respond_to do |format|
if @ticket.save
%x{ curl -F token='08F14AE57696E458BA6FC6A203F57E69' -F overwriteBehavior=normal -F content=record -F type=flat -F format=json -F data='[{"record_id":"bbc","seat_id_seq":"bbb","address":"bbb","price":"bbb","email":"bbb","tickets1_complete":"2"}]' 'https://cri-datacap.org/api/' }
format.html { redirect_to @ticket, notice: 'Ticket was successfully created.' }
format.json { render :show, status: :created, location: @ticket }
else
format.html { render :new }
format.json { render json: @ticket.errors, status: :unprocessable_entity }
end
end
end
Now when I run this application , and clicks on the save button , it creates the ticket and enter the ticket data into rails_application DB successfully. But it does not successfully execute this curl script and enters data into the other project.
here is the log file:
Started POST "/tickets" for 127.0.0.1 at 2017-01-18 10:56:13 -0500
Processing by TicketsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"foxFimIFUbuuG4OHc2ve5+6melaNL+PtemsM2tOihNTelQ6l3VEFeJmtJu0Vv5DF7JMyBtZkWO9Gv6ElKiG9EQ==", "ticket"=>{"record_id"=>"m1", "seat_id_seq"=>"m1", "address"=>"m1", "price_paid"=>"m1", "email_address"=>"m1"}, "commit"=>"Create Ticket"}
(0.1ms) begin transaction
SQL (96.3ms) INSERT INTO "tickets" ("record_id", "seat_id_seq", "address", "price_paid", "email_address", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?) [["record_id", "m1"], ["seat_id_seq", "m1"], ["address", "m1"], ["price_paid", "m1"], ["email_address", "m1"], ["created_at", "2017-01-18 15:56:13.416939"], ["updated_at", "2017-01-18 15:56:13.416939"]]
(243.2ms) commit transaction
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 796 100 12 100 784 30 2000 --:--:-- --:--:-- --:--:-- 2000
Redirected to http://localhost:3000/tickets/1
Completed 302 Found in 1039ms (ActiveRecord: 339.6ms)
EDIT
Hey, now its running that query and entering data into the other project.. can any one suggest me that is there a way I can use the variables instead of hardcoded value in the script:
%x{ curl -F token='08F14AE57696E458BA6FC6A203F57E69' -F overwriteBehavior=normal -F content=record -F type=flat -F format=json -F data='[{"record_id":"bbc2","seat_id_seq":"bbb","address":"bbb","price":"bbb","email":"bbb","tickets1_complete":"2"}]' 'https://cri-datacap.org/api/' }
In this script how can I use the the values which I enter for my tickets rails project, Actually i want to fetch the information which users enters into the text fields on my rails project to another project.. whenever user clicks on save the information which he has entered should go to another project DB.
variables in my rails project:
def ticket_params
params.require(:ticket).permit(:record_id, :seat_id_seq, :address, :price_paid, :email_address)
end