Category: Uncategorized

“Copperr” – My API-Wrapper R Package for Copper™ CRM

copperr is an R package that connects to the Copper™ CRM Platform APIs using tidy principles. The package implements most key actions from their REST API described on Copper’s developer portal here. The package includes what you’d expect to see in an API wrapper:

  • Basic (Username/API-key) Authentication methods, and caching for API details
  • CRUD (Create, Retrieve, Update, Delete) methods for records
  • Query a set of records
  • Retrieve metadata Resources (Custom Fields, Sources, Pipeline Stages, etc.)
  • Retrieve User profiles
  • Helper functions to simplify some common record lookups and manipulations

You can download the package and read the “Getting Started” guide on Github here

I’ll probably provide some examples of the kind of sales data analysis and data cleansing I am using this package for in subsequent posts. Leave a comment if you’re interested in this?

A Node.JS Application on Amazon Cloud. Part 4: Launching your webserver

And finally, launch your webserver for continuous operation

When you’re ready to launch your webserver and leave it running, you need to start it as a background process.

If you don’t, then when you logout or close your SSH session, you inadvertently kill your webserver because you ran it in the foreground – ie as a child of your SSH process. To avoid this behaviour you could of course simply run the server in the background by appending & to your bash command:

node server.js &

However, the node server may still die when you close your SSH session, because even though the node process is running in the background, it’s standard console outputs stdout and stderr are still pointed at the terminal. That means that if the node server tries to write a message to console.log or console.error it will encounter a  pipe error and terminate. This can be avoided by piping the output of your process to logfiles:

node server.js > stdout.log 2> stderr.log &

You will also want to log in later and review the contents of the logfiles to diagnose any problems you may get using your API.

If you still get problems then you can try standard commands like nohup, which can be used to run all types of processes  in the background.

Or try this solution developed specifically for Node, which has a number of advantages :

First, install the forever node package using npm:

sudo npm install -g forever

And then start your application:

forever server.js

or

forever start server.js

You don’t need to pipe stdout and stderr to files now, forever itself writes any output to these streams to log files.

you can define the log file location and names using the -o and -e command line arguments, or just use the default. To find the location of the log files forever has created, use the command

forever logs

An added benefit of using forever is that forever can automatically restart your app when it crashes or stops for any reason. To restrict the number of restarts to, say, 10 you could use:

forever -m10 server.js

forever has a number of other useful commands, such as :

To list all running processes:

forever list

Then, to stop a process, take a note of the process id number within the brackets and use it as following command:

forever stop 0

Restarting a running process goes:

forever restart 0

If you’re working on your application file, you can use the -w parameter to restart automatically whenever your server.js file changes:

forever -w server.js

Back to Part 1