Unable to Login to AppDesigner – PeopleSoft

I couldn’t login to Application Designer today for some reason. I kept getting an “Invalid User ID and password for signon.” error despite my credentials being correct.

Invalid User ID and password for signon.
Invalid User ID and password for signon.

It turned out that adding the EOPP_USER and PAPP_USER roles fixed the issue:

1: Navigate to the user’s profile (PeopleTools > Security > User Profiles > User Profiles)
2: Enter the user’s ID and press search
3: Select “Roles” from the top row of tabs
4: Add the “EOPP_USER” and “PAPP_USER” roles
5: Press save

EOPP_USER and PAPP_USER Roles - PeopleSoft
EOPP_USER and PAPP_USER Roles - PeopleSoft

Access Log – PeopleSoft

I came across a requirement today where I needed to find out when a user had last logged into PeopleSoft. The record PSACCESSLOG came in handy here, it stores all of the following:

PSACCESSLOG
OPRID: The users operator ID
LOGIPADDRESS: The users IP address
LOGINDTTM: A timestamp showing when the user logged in
LOGOUTDTTM: A timestamp showing when the user logged out
PT_SIGNON_TYPE: The signon type

Find Last Login Date for User:

SELECT *
FROM PSACCESSLOG
WHERE oprid = ''
ORDER BY effdt DESC;

Find all logins since 1st March 2012:

SELECT *
FROM PSACCESSLOG
WHERE TO_DATE(CAST(logindttm AS DATE), 'dd/mm/yy') >= TO_DATE('01/03/2012', 'dd/mm/yy');
PSACCESSLOG - Login History in PeopleSoft
PSACCESSLOG - Login History in PeopleSoft

Leave a comment below if you have any questions.

undefined method `merge’ for 5:Fixnum – Hidden Field

Just a quick post on an error I ran into today while using hidden fields:

undefined method `merge' for 5:Fixnum

27:   
28: 'button' %> 29:
30: 31: 32:

Thankfully this is an easy fix, simply amend your code as follows:

'button' %>
@upload.product_id %>

And that’s all there is to it, let me know if there are any issues.

Not Recognised by the ‘identify’ command – Paperclip

Just a quick post on another problem I ran into while setting up PaperClip. When attempting to submit a form WITHOUT an image I received the following error message:

 
Assets asset /tmp/stream20120218-22611-dgnkr-0.exe is not recognized by the 'identify' command.

Apparently the most common cause of this issue is one of two things:

#1: You don’t have RMagick installed
The easiest fix for this is to simply install the rmagick gem. Simply add rmagick to your Gemfile and run bundle install. Restart your server and you should be ready to go.

#2: Your command_path isn’t set correctly
Run the following command from your console:

chris@chris-VirtualBox:~/site$ which identify
/usr/bin/identify

Then add the path that is returned to your environment settings:

Paperclip.options[:command_path] = "/usr/bin"

#3: If all else fails

If none of the above seem to be causing your issue, try adding the following to your model:

 def asset?
    !(asset_content_type =~ /^image.*/).nil?
  end

This will simply prevent the file being processed if it’s not an image, avoiding the issue all together. Hopefully this’ll help someone out, let me know if you come across any other solutions.

UPDATE:
Apparently a more recent cause of this issue is an update to the cocaine gem, rolling back to version 0.3.2 appears to resolve the issue. Thanks to Ahmed and Fabrice for bringing it to my attention:
https://github.com/thoughtbot/paperclip/issues/1038
http://stackoverflow.com/a/12760881/522859

PaperClip Issues – Ruby on Rails

I finally decided to replace all my existing code to handle images with Paperclip. I was following the screencast by Emerson Lackey, #134 Paperclip, however I ran into a couple of issues. Thankfully they were all very easily fixed, and probably wouldn’t have occurred at all if I’d simply watched the whole screencast instead of trying to rush on ahead.

Issue #1:
The first issue I encountered was that my asset fields weren’t appearing on the page:


      
        

I spent way too much time trying to work this one out, especially considering how obvious the solution is – the screencast is simply missing an “=” after the initial “<%" in "<% f.fields_for". Simply amend it as follows:


      
        

Issue #2:
The second one is actually encountered and addressed by Emerson himself. Unfortunately I started trying to find a solution before seeing his, so just in case someone else does a Google search I’ll include the issue here:

undefined method `symbolize_keys!' for "/system/assets/1/original/mack_truck.jpg?1329550205":String

     
       
       

The problem here is simply that the parenthesis are in the wrong place, simply amend your code as follows:

     
       
       

Anyway, hopefully this helps someone else out – let me know if there are any issues.

Update: Don’t name your model assets!
Unfortunately I followed the tutorials naming example and called my model Asset. While this may have been fine in earlier version of rails it causes quirky conflicts with the asset pipeline. I strongly encourage you to use a different name i.e. Uploads

ERROR: column “category” does not exist

I’ve recently switched from SQLite3 to PostGreSQL and came across the following error this morning:

my_app_development=> select category from codes;
ERROR:  column "category" does not exist
LINE 1: select category from codes;

The following post solved the issues in one sentence:

http://archives.postgresql.org/pgsql-novice/2007-01/msg00032.php

Yes. In postgres, unquoted column and table names are converted to lower case.

The user also added that when using PostGreSql you should either be always, or never using quotes around column names.

Creating Postcode Based Locations – Rails

My goal for today was to populate a record with all of the Australian postcodes and their corresponding suburb and state descriptions. To do this I had to complete the following:

  • 1: Download the postcode/location csv
  • 2: Create new model to contain locations
  • 3: Create a script to import a csv
  • 4: Run the script in order to populate the database
  • 5: Cleanse the data

Step #1: Download the .csv
I came across the following files after browsing a few of the Australian tech forums. I chose to use the Corra ones due to the claim that there are no license restrictions.

Once you’ve chosen your .csv, just save it in your project folder i.e. C:my_app

Step #2: Create a Model for your Locations
Secondly, you’ll need to create a new migration for your locations. I’ve simply called mine Code:

def change
      create_table :codes do |t|
        t.string "Pcode"
        t.string "Locality"
        t.string "State"
        t.string "Comments"
        t.string "DeliveryOffice"
        t.string "PresortIndicator"
        t.string "ParcelZone"
        t.string "BSPnumber"
        t.string "BSPname"
        t.string "Category"
        t.timestamps
     end
end

Step #3: Create a Script to Import the .csv
The third step is to create a script that allows you to import the csv. This is made simple thanks to a comment left by “Gianluca” on the following blog post:
http://erikonrails.snowedin.net/?p=212

Simply create a new file within your tasks folder and add the following code:

#my_app/lib/tasks/import.rake

require "csv"
desc "Import CSV file into an Active Record table"
task :csv_model_import, [:filename, :model] => :environment do |task,args|
  firstline=0
  keys = {}

  CSV.foreach(args[:filename]) do |row|
    if (firstline==0)
      keys = row
      firstline=1
      next
    end

    params = {}

    keys.each_with_index do |key,i|
      params[key] = row[i]
    end

    Module.const_get(args[:model]).create(params)
  end
end

Step #4: Run the script in order to populate the database
To run the script simply run the following command:

chris@chris-VirtualBox:~/my_app$ rake csv_model_import[codes.csv,Code]

Step #5: Cleanse the data
Cleansing the data is a little tedious, however one tip is to remove all locations that do not have a category value of “Delivery Area”.

Ahwell, that’s all I’ve got for now – let me know if you have any trouble.

Connect to Database – PostGreSQL

This is just a quick post on how to connect to particular database via the console in PostGreSQL. First, make sure you’ve logged in – just swap my_app for your role name:

chris@chris-VirtualBox:~/site$ psql postgres my_app

Password for user site: 
psql (8.4.10)
Type "help" for help.

Finally, all you have to do to connect is the following:

postgres=> c my_app_development

psql (8.4.10)
You are now connected to database "my_app_development".
my_app =>

If you’re having trouble working out what database name you’re trying to connect to you can view a list of all the current database with the following command:

my_app => l

 List of databases
       Name       |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
------------------+----------+----------+-------------+-------------+-----------------------
 postgres         | postgres | UTF8     | en_AU.UTF-8 | en_AU.UTF-8 | 
 my_app_development | site     | UTF8     | en_AU.UTF-8 | en_AU.UTF-8 | 
 my_app_production  | site     | UTF8     | en_AU.UTF-8 | en_AU.UTF-8 | 
 my_app_test        | site     | UTF8     | en_AU.UTF-8 | en_AU.UTF-8 | 
 template0        | postgres | UTF8     | en_AU.UTF-8 | en_AU.UTF-8 |

my_app => q -- q to exit database list

Stop an Application – Heroku

Just a quick post on how to stop an app on Heroku:

root@chris-VirtualBox:~/site# heroku maintenance:on
Maintenance mode enabled.

This will display a static page to all visitors but still allows for migrations etc:

Heroku - Application Offline for Maintenance
Heroku - Application Offline for Maintenance

To re-enable the app simply use the following:

root@chris-VirtualBox:~/site# heroku maintenance:off
Maintenance mode disabled.